leetcode24. 两两交换链表中的节点
生活随笔
收集整理的這篇文章主要介紹了
leetcode24. 两两交换链表中的节点
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一:題目
二:上碼
class Solution { public:ListNode* swapPairs(ListNode* head) {/**思路:1.關(guān)于結(jié)點(diǎn)個(gè)數(shù)的問(wèn)題,如果是奇數(shù)個(gè)的話(huà),我們就不計(jì)算最后一個(gè)2.關(guān)于如何進(jìn)行交換,我們是分為三步我們是定義一個(gè)虛擬頭節(jié)點(diǎn)方便操作 0-1-2-3-41>:首先讓虛擬頭節(jié)點(diǎn)執(zhí)行第二個(gè)結(jié)點(diǎn) 0-2-3-42>:然后第二個(gè)結(jié)點(diǎn)再指向第一個(gè)結(jié)點(diǎn) 0-2-13>:然后讓第一個(gè)結(jié)點(diǎn)再指向第三個(gè)結(jié)點(diǎn)0-2-1-3-4由此我們就完成一組結(jié)點(diǎn)的交換,但是這個(gè)過(guò)程中 第二步我們需要存放一個(gè)臨時(shí)結(jié)點(diǎn),才能讓其指向第三步我們也需要一個(gè)臨時(shí)結(jié)點(diǎn),才能使第一個(gè)結(jié)點(diǎn)指向后序的結(jié)點(diǎn) */ListNode*node = new ListNode(0);node->next = head;//這樣的話(huà) node 就和 head指向的鏈表連起來(lái)了ListNode*cur = node;while (cur->next != nullptr && cur->next->next != nullptr) {//保證我們要交換的兩個(gè)書(shū)不為空//存放臨時(shí)結(jié)點(diǎn)ListNode*temp1 = cur->next;//存放指向第一個(gè)結(jié)點(diǎn)的指針ListNode*temp2 = cur->next->next->next;//存放指向第三個(gè)結(jié)點(diǎn)的指針//開(kāi)始交換0-1-2-3-4cur->next = cur->next->next;//虛擬頭結(jié)點(diǎn)指向第二個(gè)結(jié)點(diǎn) 0-2-3-4cur->next->next = temp1;//第二個(gè)結(jié)點(diǎn)指向第一個(gè)結(jié)點(diǎn) 0-2-1cur->next->next->next = temp2;//讓第一個(gè)結(jié)點(diǎn)指向第三個(gè)結(jié)點(diǎn) 0-2-1-3-4cur = cur->next->next;//往后移動(dòng)兩個(gè)結(jié)點(diǎn)開(kāi)始新的交換} return node->next;//一直都是cur指針對(duì)鏈表進(jìn)行操作,那么的話(huà)node->next是一直指向鏈表的頭節(jié)點(diǎn)的} };總結(jié)
以上是生活随笔為你收集整理的leetcode24. 两两交换链表中的节点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何让你的桌面变得更完美怎样让桌面
- 下一篇: 硬盘数据隐藏了如何恢复正常硬盘数据隐藏了