怎樣做微信小程序seo項(xiàng)目培訓(xùn)
題目鏈接
力扣(LeetCode)官網(wǎng) - 全球極客摯愛(ài)的技術(shù)成長(zhǎng)平臺(tái)
題目解析
????????首先可以特判一下,如果結(jié)點(diǎn)數(shù)目小于等于1,則直接返回即可,因?yàn)閿?shù)目小于等于1就不需要交換了。
????????然后我們可以創(chuàng)建一個(gè)虛擬的頭結(jié)點(diǎn),然后如圖所示定義幾個(gè)結(jié)點(diǎn)指針,經(jīng)過(guò)圖中的順序進(jìn)行交換結(jié)點(diǎn),然后將結(jié)點(diǎn)依次向后遍歷。
????????同時(shí)我們也要注意cur和next不能為nullptr,若為nullptr就不需要交換。?
?
代碼
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution
{
public:ListNode* swapPairs(ListNode* head) {if(head==nullptr||head->next==nullptr) return head;ListNode* phead=new ListNode(-1);phead->next=head;// head->1->2->3->4//prev->cur->next->nnext// head->2->1->4->3//prev->next->cur->nnextListNode*prev=phead,*cur=phead->next,*next=cur->next,*nnext=next->next;ListNode* ans=phead->next;// 注意cur和next不能為nullptrwhile(cur&&next){// 交換結(jié)點(diǎn)prev->next=next;next->next=cur;cur->next=nnext;// 修改指針// 一定注意順序prev=cur;cur=nnext;// 注意cur和next不能為nullptrif(cur) next=cur->next;if(next) nnext=next->next;}cur=phead->next;delete phead;return cur;}
};