反转一个单链表。
示例:
输入: 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