題目描述
輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。
/*
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...