24. 两两交换链表中的节点-M

版权声明:本文为博主原创文章,未经博主允许不得转载。 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
}

猜你喜欢

转载自blog.csdn.net/scylhy/article/details/87969692