題目描述:輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。
/**
* struct listnode
* };
*/
【分析】
鍊錶倒序輸出型別題:
1.利用棧,後進先出
2.利用遞迴
解法1:
思路:鍊錶只能按序查詢,先將鍊錶從頭至尾依次找出放入棧中,利用棧的後進先出,鍊錶最後乙個元素在棧頂,先出,棧中元素依次出棧,插入vector中,就返回了鍊錶從尾到頭的容器。
棧後進先出,讓head鍊錶從頭到尾依次入棧
stack:
push():入棧——棧頂增加元素
pop():刪除棧頂元素
top():取出棧頂元素
vector:
push_back():尾部插入元素
class solution
int len=arr.size();
for(int i=0;i
解法2:
遞迴head->next賦給head,head->next為空,即head已指向最後乙個鍊錶元素。
class solution
vec.push_back(head->val);//head->next為空,即head已指向最後乙個鍊錶元素。
}return vec;
}};
3 從尾到頭列印鍊錶
輸入乙個鍊錶的頭結點head,從尾到頭列印鍊錶的每乙個節點。注意是從尾到頭列印鍊錶節點。因此本題有兩個解法,分別用棧和遞迴來實現。但是請注意,在用遞迴實現的時候,當鍊表長度很長時候,容易導數函式呼叫多層棧的溢位。因此,推薦使用顯式用棧的方式,其魯棒性會更好一點。劍指offer的觀點 1 利用棧,先進...
3 從尾到頭列印鍊錶
題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個結點的值。思路 借助棧,先進後出,從頭到尾將結點指標壓入棧,然後再依次將棧頂結點的值放入vector中,pop。struct listnode class solution while stack.empty return value struct lis...
3 從尾到頭列印鍊錶
輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。總結 1 要首先考慮可不可以將鍊錶發生改變,如果可以,翻轉鍊錶,輸出 不可以,利用棧的特性 2 若逆序翻轉鍊錶,不用建立乙個首結點,只用用乙個指標指向null。3 逆序翻轉鍊錶將原始的head指向newhead寫法 head next ...