用Python实现数据结构的头插法和尾插法
1.链表结构
# -*- coding:utf-8 -*-
import random as rd
class Node():
def __init__(self, value, next=None):
self.value = value
self.next = next
2.头插法
#头插法
def creatlist_head(n):
L = Node(0) #首先申请一个头结点
link_list = [] #存储链表进行验证
link_list.append(L.value) #存入列表进行验证
for i in range(n):
data = rd.randint(0,100)
p =Node(data) #新结点
p.next = L #让头结点指向新结点
L = p #将头结点等于新节点,相当于中间变量
link_list.append(L.value)
print(link_list) #列表最后一个元素为头节点的元素
return L
3.尾插法
#尾插法
def creatlist_tail(n):
L = Node(0)
first_pointer = L
link_list = [] #存储链表进行验证
link_list.append(L.value)
for i in range(n):
data = rd.randint(0,100)
p = Node(data)
L.next = p #同理头插法
L = p #同理头插法
link_list.append(L.value)
print(link_list) #列表第一个元素为头节点的元素
return first_pointer
4.主函数
根据头插法和尾插法的元素及地址,对创建的链表进行验证,结果正确!
if __name__=='__main__':
head_pointer = creatlist_head(4)
print('Head verification:')
print(head_pointer.value)
print(head_pointer.next.value)
print(head_pointer.next.next.value)
print(head_pointer.next.next.next.value)
print(head_pointer.next.next.next.next.value)
print('\n')
head_pointer = creatlist_tail(4)
print('Head verification:')
print(head_pointer.value)
print(head_pointer.next.value)
print(head_pointer.next.next.value)
print(head_pointer.next.next.next.value)
print(head_pointer.next.next.next.next.value)
结果: