テールからチェーンテーブルを印刷[剣指offer]
1966 ワード
タイトルの説明
チェーンテーブルを入力し、チェーンテーブルの各ノードの値を末尾から印刷します.
入力説明:チェーンテーブルのヘッダーとして入力
出力説明:印刷が必要な「新しいチェーンテーブル」のヘッダーとして出力
解決する
1.後ろから配列を挿入
チェーンテーブルを最初から最後まで印刷する必要があります.チェーンテーブルの値を後ろから順に1つの配列に入れることができます(つまり、配列1位に値を入れるたびに)
2.再帰的解決
チェーンテーブルを入力し、チェーンテーブルの各ノードの値を末尾から印刷します.
入力説明:チェーンテーブルのヘッダーとして入力
出力説明:印刷が必要な「新しいチェーンテーブル」のヘッダーとして出力
解決する
1.後ろから配列を挿入
チェーンテーブルを最初から最後まで印刷する必要があります.チェーンテーブルの値を後ろから順に1つの配列に入れることができます(つまり、配列1位に値を入れるたびに)
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */
class Solution {
public:
vector<int> printListFromTailToHead(struct ListNode* head) {
vector<int> v;
while(head!=NULL){
v.insert(v.begin(),head->val);
head=head->next;
}
return v;
}
};
2.再帰的解決
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */
class Solution {
public:
vector<int> printListFromTailToHead(struct ListNode* head) {
vector<int> v;
if(head!=NULL){
if(head->next!=NULL){
v=printListFromTailToHead(head->next);
}
v.push_back(head->val);
}
return v;
}
};