链表问题,检测通过,但运行有问题,求助
#include<stdio.h>#include<malloc.h>
typedef struct lnode
{char data;
struct lnode *next;
}listnode,*linklist;
struct lnode * creat()
{
struct lnode *head,*p1,*p2;
int n,i;
printf("请输入结点个数:");
scanf("%d",&i);
head=p2=NULL;
for(n=1;n<=i;n++)
{
p1=(struct lnode*)malloc(sizeof(struct lnode));
printf("请输入第%d个结点值:",n);
scanf("%c",&p1->data);
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
}
p2->next=NULL;
return(head);
}
linklist Demo(linklist L)
{listnode *Q,*p;
if(L&&L->next)
{
Q=L;L->next;p=L;
while(p->next)
p=p->next;
p->next=Q;Q->next=NULL;
}
return L;
}
void listpint(linklist L)
{
linklist p;
int i=0;
p=L;
while(p!=NULL)
{i++;
printf("第%d个元素是:",i);
printf("%c\n",p->data);
p=p->next;
}
}
void main()
{
linklist head;
head=(linklist)malloc(sizeof(lnode));
head=creat();
listpint(head);
printf("经过Demo函数处理后:");
head=Demo(head);
listpint(head);
}