單鏈表反轉演算法

2021-07-01 23:12:39 字數 571 閱讀 9954

struct listnode ;
想到兩種方法:

想法是構建乙個新的單鏈表,然後遍歷原來的單鏈表,每遍乙個就把它插入到最新的單鏈表的開頭,下面是**:

struct listnode *reverselist(struct listnode *list) 

temp = list;

last = null;

while(temp)

return

new;

}

這個思路是遍歷鍊錶,每次都把元素移到鍊錶最前端,這樣就實現了翻轉。比如1-2-3-4,那麼過程如下:

2-1-3-4

3-2-1-4

4-3-2-1

其實也很簡單,下面是**:

struct listnode *reverselist(struct listnode *

list)

while(second->next)

}

2的演算法比1的演算法空間複雜度低,時間複雜度相同都是o(n).

C 演算法 反轉單鏈表

反轉單鏈表,我使用了兩種方法,不過他們都很相近。宣告 class clist 宣告反轉單鏈表函式 void reversesll clist clist prenode nullptr void csinglelinkedlist reversesll clist node,clist prenod...

演算法題 反轉單鏈表

時間限制 1秒 空間限制 32768k 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。解法一.迴圈反轉鍊錶 非遞迴法 整體思路就是,從原鍊錶的頭部乙個乙個取節點並插入到新鍊錶的頭部 p始終指向要反轉的結點 newhead 指向反轉後的首結點 每反轉乙個結點,把p結點的next指向newhead,ne...

常見演算法 反轉單鏈表

使用3個指標,分別指示當前節點,當前節點的前乙個節點,以及後乙個節點。初始化前乙個節點為空。當節點個數大於1時,每遍歷乙個節點,更新它的next指標指向前乙個節點。同時更新前乙個節點和後乙個節點。直至當前節點指標為空,返回前乙個節點的指標。include using namespace std st...