テールからチェーンテーブルを印刷[剣指offer]

1966 ワード

タイトルの説明
チェーンテーブルを入力し、チェーンテーブルの各ノードの値を末尾から印刷します.
入力説明:チェーンテーブルのヘッダーとして入力
出力説明:印刷が必要な「新しいチェーンテーブル」のヘッダーとして出力
解決する
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;
  }
};