双向链表
双向链表是指节点有三部分,数据、前向指针和后向指针。简单的图示可以参考看图轻松理解数据结构与算法系列(双向链表)
废话不多,直接上代码吧。
#定义一个节点类class Node(object):def __init__(self, dataval):self.dataval = datavalself.left_nextval = Noneself.right_nextval = None#定义双向链表class Cir:def __init__(self):self.headval = Nonedef two_way_append(self,newdata):#将数据转化为NodeNewnode = Node(newdata)#判断是否为第一个节点if self.headval is None:self.headval = Newnodeelse:laste = self.headval# laste_pre = Nonewhile laste.right_nextval:laste_next = laste.right_nextval# laste = laste.right_nextval# laste_next.left_nextval = lastelaste = laste_nextlaste.right_nextval = NewnodeNewnode.left_nextval = laste# Newnode.nextval = self.headvaldef show_left(self):printval = self.headvalwhile printval:# printval = printval.right_nextvalif printval.right_nextval == None:print(printval.dataval)break# printval = printval.right_nextvalelse:printval = printval.right_nextvalprint(str(printval.left_nextval.dataval))# print_left = printval.left_nextval# print(str(print_left.dataval))def show_right(self):printval = self.headvalwhile printval:print(printval.dataval)printval = printval.right_nextvalli = 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)##结果MonTueWedThu[Finished in 0.2s]复制代码