美文网首页
1.1 实现链表的逆序

1.1 实现链表的逆序

作者: 就是果味熊 | 来源:发表于2020-02-21 16:58 被阅读0次

    为便于后续编写代码,将部分函数封装在节点和头节点的类中。

    #%%
    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)
    

    相关文章

      网友评论

          本文标题:1.1 实现链表的逆序

          本文链接:https://www.haomeiwen.com/subject/klzcqhtx.html