双向链表
双向链表是指节点有三部分,数据、前向指针和后向指针。简单的图示可以参考看图轻松理解数据结构与算法系列(双向链表)
废话不多,直接上代码吧。
#定义一个节点类
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]