版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/scylhy/article/details/87969692
24. 两两交换链表中的节点-M
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
- 分析
就是遍历,两两交换,需要parent,cur,next指针;用dummyHead很方便; - code
func swapPairs(head *ListNode) *ListNode {
if head==nil{
return head
}
dummyHead:=&ListNode{-1,head};
parent,next:=dummyHead,head.Next
for head!=nil&&next!=nil{
//swap
parent.Next=next //被这个坑了
head.Next=next.Next
next.Next=head
//迭代
parent=head
head=head.Next
if head!=nil{
next=head.Next
}
}
return dummyHead.Next
}