为便于后续编写代码,将部分函数封装在节点和头节点的类中。
#%%
class LHead:
def __init__(self):
self.next = None
def get_ordered_list(self): # 以列表形式打印顺序表
order_list = []
if self.next == None or self == None:
return order_list
else:
cur = self.next
while cur != None:
order_list.append(cur.data)
cur = cur.next
return order_list
def ordered_list_size(self): #获得链表长度
return len(self.get_ordered_list())
def create_ordered_list(self,size): #在新建头结点后面生成有序链表
i = 0
tmp = None
cur = self
ordered_list = []
#构造单链表
while i < size:
tmp = LNode(i)
tmp.next = None
cur.next = tmp
cur = tmp
i += 1
cur = self.next
while cur != None:
ordered_list.append(cur.data)
cur = cur.next
return ordered_list,self
#%%
class LNode:
def __init__(self,data):
self.data = data
self.next = None
#%%
def reverse_list(head):
if head == None or head.next == None:
return None
else:
cur = head.next
pre = head
inext = cur.next
cur.next = None
pre = cur
cur = inext
while cur.next != None:
inext = cur.next
cur.next = pre
pre = cur
# cur = cur.next
cur = inext
cur.next = pre
head.next = cur
return head
#%%
head1 = LHead()
list1, head1 = head1.create_ordered_list(9)
print(list1)
head2 = reverse_list(head1)
list2 = head2.get_ordered_list()
print(list2)
网友评论