c语言数据结构用尾插法建立一个链表,求大神,不知哪错了
#include<stdio.h>#include<stdlib.h>#include<string.h>#definen100#defineelemchartypede...
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 100
#define elem char
typedef struct node
{
char a[n];
struct node *next;
}node,linklist;
int main()
{
int f=1;
char b[n];
linklist *L;node *p=NULL;
node *s,*r;
L=(linklist *)malloc(sizeof(node));
L->next=NULL;
r=L;
while(f)
{
s=(node *)malloc(sizeof(node));
s->next=NULL;
scanf("%s",b);
strcpy(s->a,b);
if(s->a[0]!='^')
{ r->next=s;
r=s;
}
else
f=0;
}
p=L;
while(p!=NULL)
{
puts(p->a);
puts(" ");
p=p->next;
}
p=L;
while(p->next!=NULL)
{
free(p);
p=p->next;
}
return 0;
}
运行一次,就出现图片的问题,怎么修改,帮忙编译一下 展开
#include<stdlib.h>
#include<string.h>
#define n 100
#define elem char
typedef struct node
{
char a[n];
struct node *next;
}node,linklist;
int main()
{
int f=1;
char b[n];
linklist *L;node *p=NULL;
node *s,*r;
L=(linklist *)malloc(sizeof(node));
L->next=NULL;
r=L;
while(f)
{
s=(node *)malloc(sizeof(node));
s->next=NULL;
scanf("%s",b);
strcpy(s->a,b);
if(s->a[0]!='^')
{ r->next=s;
r=s;
}
else
f=0;
}
p=L;
while(p!=NULL)
{
puts(p->a);
puts(" ");
p=p->next;
}
p=L;
while(p->next!=NULL)
{
free(p);
p=p->next;
}
return 0;
}
运行一次,就出现图片的问题,怎么修改,帮忙编译一下 展开
展开全部
p=L;
while(p!=NULL)
{
puts(p->a);
puts(" ");
p=p->next;
}
p=L;
while(p->next!=NULL)
{
free(p);
p=p->next;
}
改成 :
p=L->next;
while(p!=NULL)
{
puts(p->a);
puts(" ");
p=p->next;
}
p=L;
while(p!=NULL)
{
L=L->next;
free(p);
p=L;
}
追问
在释放空间的时候,是不是将L依次指向链表的下一个内容,在释放内存
追答
对,否则的话就得不到下一个内容了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询