9度_タイトル1518:チェーンテーブルの反転
2111 ワード
//後挿しでチェーンテーブルを作成し、2番目の要素(もしあれば)から順に先頭ノードの後ろに挿入してチェーンテーブルを反転させる
タイトル説明:チェーンテーブルを入力し、チェーンテーブルを反転した後、チェーンテーブルのすべての要素を出力します.
(hint:チェーンテーブルは必ずご利用ください)
入力:
入力には複数のテストサンプルが含まれ、入力は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
タイトル説明:チェーンテーブルを入力し、チェーンテーブルを反転した後、チェーンテーブルのすべての要素を出力します.
(hint:チェーンテーブルは必ずご利用ください)
入力:
入力には複数のテストサンプルが含まれ、入力は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>
#include<cstdlib>
using namespace std;
typedef struct LNode
{
struct LNode *next ;
int data;
}*Linklist;
Linklist CreateList(Linklist list,int n)
{
int num=0;
Linklist p=NULL,q=NULL;
p=(Linklist)malloc(sizeof(Linklist *));
list=p;
p->next=NULL;
for(int i=0;i<n;i++)
{
q=(Linklist)malloc(sizeof(Linklist *));
cin>>num;
q->data=num;
q->next=NULL;
p->next=q;
p=q;
}
return list;
}
Linklist DesendList(Linklist list)
{
Linklist p=list->next,q=p->next,s=NULL;
p->next=NULL;
while(q)//q
{
s=q;
q=q->next;
s->next=p;
list->next=s;
p=s;
}
return list;
}
void TraveseList(Linklist list)
{
Linklist p=list->next;
if(p)
{
cout<<p->data;
p=p->next;
}
else
{cout<<"NULL"<<endl;return ;}
while(p)
{
cout<<' '<<p->data;
p=p->next;
}
cout<<endl;
}
int main()
{
int n;
while(cin>>n)
{
if(!n){cout<<"NULL"<<endl;continue;}
Linklist list=NULL;
list=CreateList( list, n);
list=DesendList(list);
TraveseList(list);
}
return 0;
}
/**************************************************************
Problem: 1518
User: hndxztf
Language: C++
Result: Accepted
Time:250 ms
Memory:2972 kb
****************************************************************/