链表转置后没有打印结果,while函数里也没有一个打印结果,为什么没进循环呢?求改错。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct student
{
int data;
struct student *next;
}a;
struct student *p,*q,*head,*t,*l,*m;
int main()
{
int i,n,c=0;
printf("请输入n:\n");
scanf("%d",&n);
l=head=q=&a;
printf("\n");
q->next=NULL;
printf("正项链表:\n");
printf("请输入%d个同学的成绩:\n",n);
for(i=0;i<n;i++)
{
p = (struct student*)malloc(sizeof(struct student));
c++;
if(c==1) head=l=p;
scanf("%d",&p->data);
if(p->data == -1)
{
printf("输入结束\n");
p -> next = NULL;
break;
}
q->next = p;
q = q->next;
}
p->next=NULL;
printf("\n");
printf("打印数据:\n");
for(i=0;head!=NULL;i++)
{
printf("%d\n", head->data);
head = head->next;
}
printf("转置为逆向链表为:\n");
t= l->next;
m->next =NULL;
while(l!=NULL)
{
l->next= m->next;
m->next = l;
l = t;
t = t->next;
printf("%d\n",l->data);
}
for(i=0;i<n;i++)
{
printf("%d\n",m->data);
m=m->next;
}
return 0;
}