Given a linked list, swap every two adjacent nodes and return its head.
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、虛擬空間、營銷軟件、網站建設、定海網站維護、網站推廣。
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.
給定鏈表,每兩個節(jié)點為一組,交換相應節(jié)點。
解題:
1)如果鏈表為空或者鏈表只有一個節(jié)點,則直接返回鏈表
2)取出相鄰兩節(jié)點A,B。并把list往后移動兩次。
3)其實交換兩節(jié)點實質就是交換兩節(jié)點的val值,故進行值交換即可。
說明:
1)list != NULL檢查是防止出現list為NULL時,此時執(zhí)行l(wèi)ist->next會出現段錯誤。
2)list->next != NULL是說明交換的兩個節(jié)點存在。
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* swapPairs(struct ListNode* head) { if ( head == NULL || head->next == NULL ) { return head; } struct ListNode *list = head; struct ListNode *swapA = NULL; struct ListNode *swapB = NULL; while ( list != NULL && list->next != NULL ) { swapA = list; swapB = list->next; list = list->next->next; int val = 0; val = swapA->val; swapA->val = swapB->val; swapB->val = val; } return head; }