数据结构之双向链表----Python

1,242 阅读1分钟

双向链表

双向链表是指节点有三部分,数据、前向指针和后向指针。简单的图示可以参考看图轻松理解数据结构与算法系列(双向链表)

废话不多,直接上代码吧。

#定义一个节点类
class Node(object):
	def __init__(self, dataval):
		self.dataval = dataval
		self.left_nextval = None
		self.right_nextval = None
#定义双向链表
class Cir:
	def __init__(self):
		self.headval = None

	def two_way_append(self,newdata):
		#将数据转化为Node
		Newnode = Node(newdata)
		#判断是否为第一个节点
		if self.headval is None:
			self.headval = Newnode
		else:
			laste = self.headval
			# laste_pre = None
			while laste.right_nextval:
				laste_next = laste.right_nextval
				# laste = laste.right_nextval
				# laste_next.left_nextval = laste
				laste = laste_next
			laste.right_nextval = Newnode
			Newnode.left_nextval = laste
		# Newnode.nextval = self.headval


	def show_left(self):
		printval = self.headval
		while printval:
			# printval = printval.right_nextval
			if printval.right_nextval == None:
				print(printval.dataval)
				break
			# printval = printval.right_nextval
			else:
				printval = printval.right_nextval
				print(str(printval.left_nextval.dataval))
			# print_left = printval.left_nextval
			# print(str(print_left.dataval))
	def show_right(self):
		printval = self.headval
		while printval:
			print(printval.dataval)
			printval = printval.right_nextval
li = Cir()
li.two_way_append('Mon')
li.two_way_append('Tue')
li.two_way_append('Wed')
li.two_way_append('Thu')


show = li.show_left()
show_right = li.show_right()
# print(show)

##结果
Mon
Tue
Wed
Thu
[Finished in 0.2s]