[原创]求助,问题在哪里?
#include<stdio.h>#include<stdlib.h>
struct lnode
{
int data;
struct lnode *next;
};
main()
{
int n,i;
struct lnode *new,*q,*head;
printf("please input the length of link:");
scanf("%d",&n);
head=NULL; //逆位序输入N个元素的值,建立单链线性表
for(i=n;i>0;i--)
{
new=(struct lnode *)malloc(sizeof(struct lnode));
scanf("%d",&new->data);
new->next=head;
head=new;
}
q=head;
printf("按逆序输出\n");
for(i=0;i<n;i++)
{
printf("%d\n",q->data);
q=q->next;
}
struct lnode *p,*s,*k; //逆转链表,假设head!=NULL
k=head;
s=k->next;
p=s->next;
if(s->next!=NULL)
{
while(p->next!=NULL)
{
s->next=k;
if (k==head)
k->next=NULL;
k=s;
s=p;
p=p->next;
}
if(p->next==NULL)
{
p->next=s;
s->next=k;
}
head=p; /*表头指向p*/
}
else
{
s->next=k;
k->next=NULL;
head=s; /*表头指向s*/
}
q=head;
printf("输出\n");
for(i=0;i<n;i++)
{
printf("%d\n",q->data);
q=q->next;
}
}
大家好,程序没有链表逆转后面那部分就没问题,加上后就有问题了,能解释一下吗?