//后插法建立链表,然后从第二个元素(若有的话)开始依次插入到头结点后面从而达到反转链表的效果
题目描述:
输入一个链表,反转链表后,输出链表的所有元素。
(hint : 请务必使用链表)
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000):代表将要输入的链表的个数。
输入的第二行包含n个整数t(0<=t<=1000000):代表链表元素。
输出:
对应每个测试案例,
以此输出链表反转后的元素,如没有元素则输出NULL。
样例输入:
5
1 2 3 4 5
0
样例输出:
5 4 3 2 1
NULL
#include
#include
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
>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<
data; p=p->next; } else {cout<<"NULL"<
data; p=p->next; } cout<
>n) { if(!n){cout<<"NULL"<