输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表进行就地逆置(不增加新结点),并输出逆置后的单链表数据。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入多个整数,以-1作为该组测试的结束(-1不处理)。
输出格式:
对于每组测试,输出逆置后的单链表数据(数据之间留一个空格)。
输入样例:
1
1 2 3 4 5 -1
输出样例:
5 4 3 2 1
#include<stdio.h>
#include<string.h>
typedef struct node
{
int data;
struct node *next;
}*list;
list creat()//直接逆序建立链表(头插法)
{
list head,l;
int elem;
head=(list)malloc(sizeof(struct node));
head->next=NULL;
while(scanf("%d",&elem)&&elem!=-1)
{
l=(list)malloc(sizeof(struct node));
l->data=elem;
l->next=head->next;
head->next=l;
}
return head;
}
void print(list head)
{
list temp,p;
temp=head->next;
while(temp->next)
{
printf("%d ",temp->data);
temp=temp->next;
}
printf("%d\n",temp->data);
return ;
}
int main()
{
int T,i;
scanf("%d",&T);
for(i=1;i<=T;i++)
{
list head;
head=creat();
print(head);
}
return 0;
}