Swap Nodes in Pairs 问题

problem:

Given a linked list, swap every two adjacent nodes and return its head.For example,Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.在单链表中,每两个结点交换一下位置,单个的不交换

thinking:

(1)这道题在不新建结点的情况下,指向关系复杂,,慢慢分析

(2)head是头指针,指向第一个有效结点!!!

code:

/** * Definition for singly-linked list. * struct ListNode { *int val; *ListNode *next; *ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:ListNode *swapPairs(ListNode *head) {ListNode *index = head;ListNode *pre = NULL;ListNode *tmp = NULL;ListNode *modify = head;;int i=0;if(head==NULL||head->next==NULL)return head;while((index!=NULL)&&(index->next!=NULL)){i++;pre=index;if(i==1){head=pre->next;index = index->next;tmp = index->next;pre->next = tmp;index->next = pre;index=tmp;modify=pre;}else{index = index->next;tmp = index->next;modify->next=pre->next;pre->next = tmp;index->next = pre;index=tmp;modify=pre;}}return head;}};

即使爬到最高的山上,一次也只能脚踏实地地迈一步。

Swap Nodes in Pairs 问题

相关文章:

你感兴趣的文章:

标签云: