一个简单的链表问题

rypgood 2009-03-07 03:50:52
大家帮忙看一下下面的代码,在vc环境中编译通过,很多警告,运行出错,内存问题,请大家帮忙修改一下,实在找不到问题原因了
#include<stdio.h>
#include<malloc.h>
typedef struct
{
char *numbers;
struct Element *next;
}Element;
typedef struct
{
struct Element *head;
struct Element *last;
}Group;
Group *G;
Element * creatElement();
void creatGroup();
main()
{
creatGroup();
}
Element * creatElement()
{
char *c;
Element *e;
e=(Element *)malloc(sizeof(Element));
printf("请输入字符串\n");
fflush(stdin);
gets(c);
e->numbers=c;
e->next=NULL;
return e;
}
void creatGroup()
{
Element *head=(Element *)malloc(sizeof(Element));
Element *e;
int i=0;
head=creatElement();
e=head;
G=(Group *)malloc(sizeof(Group *));
G->head=head;
for(i=0;i<5;i++)
{
while(e->next!=NULL)
{
e=e->next;
}
e->next=creatElement();
G->last=e;
}
}
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rypgood 2009-03-07
  • 打赏
  • 举报
回复
谢谢,测试一下,通过回来结贴
冰矿 2009-03-07
  • 打赏
  • 举报
回复

Element * creatElement()
{
char *c = (char *)malloc(sizeof(char)*20);/*接收字符串要有内存空间啊*/
Element *e = (Element *)malloc(sizeof(Element));
printf("请输入字符串\n");
fflush(stdin);
gets(c);/*得到字符串*/
e->numbers = c;
e->next = NULL;
return e;
}
冰矿 2009-03-07
  • 打赏
  • 举报
回复
Element * creatElement()
{
char *c;/*字符指针*/
Element *e;
e=(Element *)malloc(sizeof(Element));
printf("请输入字符串\n");
fflush(stdin);
gets(c);/*得到字符串*/
e->numbers=c;
e->next=NULL;
return e;
}

先不说别的,一看你这个函数就有问题。
你用一个字符指针c去接收gets(c)得到的字符串,能行吗?肯定出错的。
建议先malloc分配好足够空间来存放字符串,然后在gets(c)将输入字符串放入其中。
rypgood 2009-03-07
  • 打赏
  • 举报
回复
我本来是不想分配的,但是老是出现内存问题,就给加上去了,还是出现这样的问题

为什么在creatGroup()里面不可以调用creatElement()??
我把creatGroup里面的代码放到main里面去还是一样的错误
  • 打赏
  • 举报
回复
楼主你creatGroup()里还能再加个creatElement(); ..
head=creatElement(); //head刚申请完内存,还没做啥,就被你无情的丢失了.

感觉你的代码好乱,建议先下个链表的代码,模仿一下,不要自己架空中楼阁.
rypgood 2009-03-07
  • 打赏
  • 举报
回复
发在那里不好看,我重新发一下



#include<stdio.h>
#include<malloc.h>
typedef struct
{
char *numbers;
struct Element *next;
}Element;
typedef struct
{
struct Element *head;
struct Element *last;
}Group;
Group *G;
Element * creatElement();
void creatGroup();
main()
{
creatGroup();
}
Element * creatElement()
{
char *c;
Element *e;
e=(Element *)malloc(sizeof(Element));
printf("请输入字符串\n");
fflush(stdin);
gets(c);
e->numbers=c;
e->next=NULL;
return e;
}
void creatGroup()
{
Element *head=(Element *)malloc(sizeof(Element));
Element *e;
int i=0;
head=creatElement();
e=head;
G=(Group *)malloc(sizeof(Group *));
G->head=head;
for(i=0;i<5;i++)
{
while(e->next!=NULL)
{
e=e->next;
}
e->next=creatElement();
G->last=e;
}
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧