用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)

结果:
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐