タイトル1518:チェーンテーブルの反転
1242 ワード
入力:
入力には複数のテストサンプルが含まれ、入力はEOFで終了します.各テストケースについて、入力される第1の動作の整数n(0<=n<=1000):入力するチェーンテーブルの個数を表す.入力された2行目は、チェーンテーブル要素を表すn個の整数t(0<=t<=1000000)を含む.
出力:
各テストケースに対応して、チェーンテーブルの反転後の要素を出力し、要素がない場合はNULLを出力します.
サンプル入力:
サンプル出力:
入力には複数のテストサンプルが含まれ、入力はEOFで終了します.各テストケースについて、入力される第1の動作の整数n(0<=n<=1000):入力するチェーンテーブルの個数を表す.入力された2行目は、チェーンテーブル要素を表すn個の整数t(0<=t<=1000000)を含む.
出力:
各テストケースに対応して、チェーンテーブルの反転後の要素を出力し、要素がない場合はNULLを出力します.
サンプル入力:
5
1 2 3 4 5
0
サンプル出力:
5 4 3 2 1
NULL
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
Node(int data) {
this->data = data;
next = NULL;
}
Node() {
this->data = 0;
next = NULL;
}
};
int main() {
int n;
while (cin >> n) {
if (n <= 0) {
cout << "NULL" << endl;
} else {
Node* head = new Node;
cin >> head->data;
Node* node = NULL;
Node* p = head;
for (int i = 1; i < n; i++) {
node = new Node;
cin >> node->data;
p->next = node;
p = node;
}
p = head;
Node* post = NULL;
Node* pre = NULL;
while(p != NULL){
post = p->next;
p->next = pre;
pre = p;
p = post;
}
// p = pre;
for(int i=0;i<n-1;i++){
cout<<pre->data<<" ";
pre = pre->next;
}
cout<<pre->data<<endl;
}
}
return 0;
}