[求助]单链表逆置的问题
我参考别人的源码写了一个单链表逆置的程序但是有问题
我自己又找不到
请大虾们帮帮忙吧
#include <stdio.h>
#include <stdlib.h>
#define maxsize 10
typedef struct lnode
{
int data;
struct lnode *next;
}lnode;
void initlinklist(lnode *head)
{
lnode *s,*r;
int x;
head=(lnode *) malloc ( sizeof (lnode));//创建头节点
r=head;//把头节点给r
for(int i=0;i<maxsize;i++)//循环从第一个节点开始赋值
{
printf("请输入数据:");
scanf("%d",&x);
s=(lnode *) malloc ( sizeof (lnode));//创建s节点
s->data=x;//给s的data赋值
r->next=s;//r指向s
r=s;//s的值给r
printf("\n第%d个节点为 %d\n",i+1,x);
}
printf("输入的单链表为:\n");//输出单链表
lnode *t;
t=head->next;
for(i=0;i<10;i++)
{
printf("%d\t",t->data);
t=t->next;
}
}
void reverse(lnode *head)
{
lnode *p,*s=NULL,*h;
p=(lnode *)malloc(sizeof(lnode));
p=head->next;//这里出问题了
while(p)
{
p=p->next;
}
p=head->next;
if((h=(lnode *)malloc(sizeof(lnode)))==NULL) exit(1);
h->next=p;
head->next=NULL;
for(int i=0;i<10;i++)
{
p=h->next;
h->next=p->next;
p->next=NULL;
if(s==NULL)
s=p;
else
{
p->next=s;
s=p;
}
}
head->next=s;
free(h);
}
void main()
{
lnode *head;
head=NULL;
initlinklist( head);
reverse( head);
}