单链表的逆序

1.将单链表储存为数组,然后按照数组的索引逆序进行反转。

2.利用循环迭代的思想依次将各节点反转。

                                                      prev(Null)  A(head)-->B(next)-->C-->D-->Null

开始时,prev为Null,head指向头结点A,next指针指向A节点的下一个节点B。首先从A节点开始逆序,将A节点的next指针指向prev,因为prev的当前值是NULL,所以A节点就从链表中脱离出来了,然后移动head和next指针,使它们分别指向B节点和B的下一个节点C(因为当前的next已经指向B节点了,因此修改A节点的next指针不会导致链表丢失)。逆向节点A之后,链表的状态如图

                                                    Null<--A(prev)    B(head)-->C(next)-->D--Null

一共经历了四个操作:

head->next=prev

prev = head

head = next

next=head->next

循环的初始条件为:prev = Null

循环的终止条件为:head = Null

用python实现:

class LinkReverse:

     def ReverseList(self,head):

        if not head or head.next==None:

            return head

        last = None

        while head:

            tmp = head.next

            head .next= last

            last = head

            head = tmp

        return last    #返回表头

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值