输入若干个不超过100的整数,建立单链表,然后将链表中所有结点的链接方向逆置,要求仍利用原表的存储空间。输出逆置后的单链表。
输入格式:
首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据在一行上输入数据个数n及n个不超过100的整数。
输出格式:
对于每组测试,输出逆置后的单链表,每两个数据之间留一个空格。
输入样例:
1
11 55 50 45 40 35 30 25 20 15 10 5
输出样例:
5 10 15 20 25 30 35 40 45 50 55
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
typedef struct node{
int data;//数据域
struct node *next;//指针域
}node;
node * create(node *head,int n){
node *p;
head=(node*)malloc(sizeof(node));
head->next=NULL;
for(int i=0;i<n;i++)
{
p=(node*)malloc(sizeof(node));//创建一个新节点
scanf("%d",&p->data );
p->next =head->next ;
head->next =p;
}//头插法,输出的为原来逆转的
return head;
}
void kongge(node *head){//输出的函数
node * p= head->next;
while(p !=NULL){
if (p ->next!=NULL)//空格处理
printf("%d ",p->data );
else
printf("%d",p->data );
p=p->next;//遍历,即使得头结点不动
}
printf("\n");//不能放在main中
}
int main(){
int n, m;
node *p, *head;
scanf("%d",&m);
while(m--){
scanf("%d",&n);
head=create(head,n);
kongge(head);
}
return 0;
}