劍指offer 24 反轉鍊錶 C

2021-10-06 04:29:00 字數 1277 閱讀 9259

題目描述

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

/*

struct listnode

};*/

class

solution

return newhead;}}

;//也可以寫成如下形式

class

solution

newhead = cur;

last=cur-

>next;

cur-

>next = pre;

pre = cur;

cur = last;

return newhead;}}

;

思路2:遞迴解法——利用遞迴走到鍊錶末端,再更新每乙個node的next,而newhead不會發生改變,為該鍊錶最後乙個節點。

class

solution

};

思路3:使用輔助棧

class

solution

listnode* newhead = tmp;

//當tmp->next==nullptr時,說明此時tmp指向尾節點

listnode* node = newhead;

while

(!st.

empty()

) node-

>next =

nullptr

;//注意最後讓末節點指向空

return newhead;

}private

: stack> st;};

//也可以寫成如下

class

solution

// listnode* newhead = new listnode(st.size());

// newhead = st.top();

listnode* newhead = st.

top();

//再取棧頂元素

st.pop();

listnode* node = newhead;

while

(!st.

empty()

) node-

>next =

nullptr

;return newhead;

}private

: stack> st;

};

劍指 Offer 24 反轉鍊錶c

定義乙個pre指標指向上乙個結點和cur指標指向當前節點,利用臨時指標tmp cur next不斷更新cur 錯誤案例 definition for singly linked list.struct listnode class solution head next null cur next p...

劍指Offer 24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。例 輸入 1 2 3 4 5 none 輸出 5 4 3 2 1 none 雙指標遍歷鍊錶,將當前節點的next設為前乙個節點。注意儲存當前節點的next來遍歷。時間複雜度 o n 空間複雜度 o 1 def reverse l...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null思路 初始化乙個新的頭節點new head,然後用尾插法把原始鍊錶中的結點插入新的頭節點。最後return new head next.acwing 3...