给你来个完整的可以运行的!
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*Linklist;
void initial(Linklist L)
{
Linklist p;
p=(Linklist)malloc(sizeof(LNode));
if(!p) exit(0);
L=p;
L->next=NULL;
}
void creatlist(Linklist L)
{
Linklist p,q;
int m;
q=L;
printf("请输入若干个正整数,输入非正整数时结束:\n");
while(1)
{
scanf("%d",&m);
if(m>0)
{
p=(Linklist)malloc(sizeof(LNode));
p->data=m;
q->next=p;
q=p;
}
else break;
}
p->next=NULL;
}
void displaylist(Linklist L)
{
Linklist p=L;
for(p=L->next;p!=NULL;p=p->next)
printf("%d
",p->data);
printf("\n");
}
void reverse(Linklist L)//方法:在第一个结点之前依次插入后面的元素
{
Linklist p,q;
p=L->next->next;q=p->next;
L->next->next=NULL;
while(q)
{
p->next=L->next;
L->next=p;
p=q;
q=q->next;
}
p->next=L->next;//处理链表中的最后一个结点
L->next=p;
}
void main()
{
LNode A;
initial(&A);
creatlist(&A);
printf("原序输出链表:\n");
displaylist(&A);
reverse(&A);
printf("逆序输出链表:\n");
displaylist(&A);
}