九度ノートの1511:末尾からチェーンテーブルを印刷する

1714 ワード

タイトル1511:末尾からチェーンテーブルを印刷


時間制限:1秒
メモリ制限:128メガ
特殊問題:いいえ
コミット:332
解決:121
タイトルの説明:
チェーンテーブルを入力し、チェーンテーブルの各ノードの値を末尾から印刷します.
入力:
各入力ファイルには、テストサンプルのセットのみが含まれます.各テストケースのセットには、チェーンテーブルのノードを表す0より大きい整数の複数の行が含まれます.最初の行はチェーンテーブルの最初のノードの値で、順番に類推されます.-1に入力すると、チェーンテーブルの入力が完了します.-1自体はチェーンテーブルに属していません.
出力:
各テストケースに対応して、チェーンテーブルの各ノードの値を末尾から順に出力し、各値が1行を占める.
サンプル入力:
1
2
3
4
5
-1

サンプル出力:
5
4
3
2
1

アルゴリズム解析


逆序私たちはまずスタックを考えて、また再帰過程がスタックの入スタック出スタック過程であることを考えて、だから私たちは再帰でします.

ソースプログラム

#include <stdio.h>
struct Node{
    int num;
    Node *next;
public:
    Node(int num_):num(num_),next(NULL){};
};
 
Node *pbegin=new Node(0);
Node *pend=pbegin;
void init(){
 
    pbegin=new Node(0);
    Node *temNode=NULL;
    int num = 0;
    while(1){
        scanf("%d",&num);
        if(num==-1)
            break;
        temNode = new Node(num);
        if(pbegin->next ==NULL){
            pbegin->next = temNode;
            pend = temNode;
        }else{
            pend->next =  temNode;
            pend = temNode;
        }
 
    }
}
void printList(Node *node){
    if(node==NULL)
        return;
    printList(node->next);
    printf("%d
",node->num); } void judo(){           init();         printList(pbegin->next);       } int main() {     judo();     return 0; }   /**************************************************************     Problem: 1511     User: KES     Language: C++     Result: Accepted     Time:100 ms     Memory:5548 kb ****************************************************************/