怎么分析Reverse Linked List,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、大新ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的大新網(wǎng)站制作公司
Reverse Linked List
反轉(zhuǎn)一個(gè)單鏈表。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL進(jìn)階:
你可以迭代或遞歸地反轉(zhuǎn)鏈表。你能否用兩種方法解決這道題?
設(shè)置三個(gè)節(jié)點(diǎn)pre
、cur
、next
(1)每次查看cur
節(jié)點(diǎn)是否為NULL
,如果是,則結(jié)束循環(huán),獲得結(jié)果
(2)如果cur
節(jié)點(diǎn)不是為NULL
,則先設(shè)置臨時(shí)變量next
為cur
的下一個(gè)節(jié)點(diǎn)
(3)讓cur
的下一個(gè)節(jié)點(diǎn)變成指向pre
,而后pre
移動(dòng)cur
,cur
移動(dòng)到next
(4)重復(fù)(1)(2)(3)
動(dòng)畫演示GIF有點(diǎn)大,請(qǐng)稍微等待一下加載顯示^_^
1// 206. Reverse Linked List
2// https://leetcode.com/problems/reverse-linked-list/description/
3//
4// 遞歸的方式反轉(zhuǎn)鏈表
5// 時(shí)間復(fù)雜度: O(n)
6// 空間復(fù)雜度: O(1)
7class Solution {
8public:
9 ListNode* reverseList(ListNode* head) {
10
11 // 遞歸終止條件
12 if(head == NULL || head->next == NULL)
13 return head;
14
15 ListNode* rhead = reverseList(head->next);
16
17 // head->next此刻指向head后面的鏈表的尾節(jié)點(diǎn)
18 // head->next->next = head把head節(jié)點(diǎn)放在了尾部
19 head->next->next = head;
20 head->next = NULL;
21
22 return rhead;
23 }
24};
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。