反转链表&&交换链表的节点

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

思路

将当前节点的next指针指向前驱的节点,需要有2个指针来记录,一个记录当前节点,一个记录前驱节点,循环5次直到列表结束,三个简单复制语句

代码

class Solution:
    def reverseList(self, head):
        cur, prev = head, None
        while cur:
            cur.next, prev, cur = prev, cur, cur.next
        return prev

两两交换链表的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

思路

a,b,pre记录三个指针,相邻两个,相邻两个元素前面的一个,第一步将节点 2 指向节点 1,然后再将节点 1 指向节点三。这一步交换完毕后链表变为 2->1->3->4。在进行下一次交换,将节点 4 指向节点 3,节点3指向none 但是还要注意节点 1 的指向,节点 1 要指向节点 4。

代码

def swapPairs(self,head):
    pre, pre.next = self, head
    while pre.next and pre.next.next:
        a = pre.next
        b = a.next
        pre.next,b.next ,a.next = b,a,b.next
        pre = a
        
    return  self.next

猜你喜欢

转载自blog.csdn.net/weixin_44510615/article/details/88636603