classNode(object):def__init__(self, value=None,next=None):
self.val = value
self.next=nextdef__repr__(self):return"Node:{0.val!s}".format(self)def__str__(self):next=Noneif self.next:next= self.next.val
return"Node({0.val!s},next:{1})".format(self,next)defgenerateLinkedList(maxnum=20):import random
import string
num = random.randint(0, maxnum)if num ==0:returnNone
head = Node(random.choice(string.ascii_uppercase))
cur = head
for i inrange(1, num):
cur.next= Node(random.choice(string.ascii_uppercase))
cur = cur.nextreturn head
生成随机长度的双向链表
classDoubleWayNode(Node):def__init__(self, value=None, pre=None,next=None):super().__init__(value,next)
self.pre = pre
def__str__(self):
pre =next=Noneif self.next:next= self.next.val
if self.pre:
pre = self.pre.val
return"Node(pre:{0},{1.val!s},next:{2})".format(pre,self,next)defgenerateDoubleWayLinkedList(maxnum=20):
num = random.randint(0, maxnum)if num ==0:returnNone
head = DoubleWayNode(random.choice(string.ascii_uppercase))
cur = head
for i inrange(1, num):
cur.next= DoubleWayNode(random.choice(string.ascii_uppercase),pre=cur)
cur = cur.nextreturn head
打印链表
deftraverseLinkedList(head):
cur = head
while cur:print(cur.val, end=",")
cur = cur.next
生成随机长度的单向链表class Node(object): def __init__(self, value=None, next=None): self.val = value self.next = next def __repr__(self): return "Node:{0.val!s}".format(self) def __str__(self): next = None if s