首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个创建链表的程序,研究了一天愣是没弄出来,帮忙看一上感激不尽

2013-09-11 
一个创建链表的程序,研究了一天愣是没弄出来,各位高手帮忙看一下感激不尽#includestdio.h#includemallo

一个创建链表的程序,研究了一天愣是没弄出来,各位高手帮忙看一下感激不尽
#include<stdio.h>
#include<malloc.h>
 struct lianbiao
{
  int data;
  struct lianbiao *next;
} ;

void initlist(int n)
{
  struct lianbiao *biao;
  int i=0;
   
  for(i=0;i<n;i++)
  {
   
  biao->next=(lianbiao*)malloc(sizeof(lianbiao));
  (*(biao->next)).data=scanf("%d\n",(*(biao->next)).data);
biao->next=(biao->next)->next;
  }
   



void main()
{
  initlist(5);
}


编译没有出现问题,就是运行的时候总是自动停止 估计还是程序的逻辑问题啊 求高手帮你忙解决啊

[解决办法]
biao->next=(lianbiao*)malloc(sizeof(lianbiao));
biao没有初始化
可以先创建一个头结点。
[解决办法]
说两个一眼就能看出来的问题:
1.指针biao都没初始化,怎么就能 biao->next=... ,什么叫野指针?
2.biao->next=(biao->next)->next; biao->next指向刚申请的结点,而(biao->next)->next还未初始化,把未知的值给了biao->next,又是一个野指针,biao->next本来存放的刚申请的内存呢,丢掉了,内存泄漏。
[解决办法]
#include<stdio.h>
#include<malloc.h>

#include <string.h>
struct lianbiao
{
int data;
struct lianbiao *next;
} ;

void initlist(int n)
{
struct lianbiao biao1,*biao = NULL;

memset(&biao1, 0, sizeof(lianbiao));
biao=&biao1;
int i=0;

for(i=0;i<n;i++)
{

biao->next=(lianbiao*)malloc(sizeof(lianbiao));
memset(biao->next, 0, sizeof(lianbiao));
printf("input\n");
(*(biao->next)).data=scanf("%d\n",&(*(biao->next)).data); //少个&
printf("suceed\n");
biao=biao->next;
}

}


void main()
{
initlist(5);
}

没吃饭也要先帮你下。
我的异常网推荐解决方案:程序员的一天,http://www.myexception.cn/other/1391144.html

热点排行