回 帖 发 新 帖 刷新版面

主题:[讨论]一个单链表的C程序问题

#include <stdio.h>  
#include <string.h>  
#include <malloc.h>  
#include <process.h> 
#define NULL 0

typedef struct aa
{int number;
struct aa *next;
}linklist;

void chushihua(linklist *l)
{
l=(linklist *)malloc(sizeof(linklist));
if(!l)
    {
    printf("初始化失败。\n");
    exit(0);
    };
l->next=NULL;
}

void shurushuju(linklist *l,int data)
{
linklist *p,*q;
p=(linklist *)malloc(sizeof(linklist));
q=l;
if(!p)
    {printf("内存分配失败。\n");
    exit(0);
    };
p->number=data;
p->next=NULL;
while(l->next!=NULL)
    l=l->next;
l->next=p;
}

void main()
{
int data;
linklist l;
chushihua(&l);
scanf("%d",&data);
while(data)
    {
    shurushuju(&l,data);
    scanf("%d",&data);
    };
}


这是一个单链表初始化和建立的C程序
看看这个程序哪里错了
编译是通过的  运行时候说什么内存不能读什么的

回复列表 (共2个回复)

沙发

主函数中  linklist l;一句中 l已经被分配了空间,所以void chushihua(linklist *l)就没什么意义了,导致l->next指向不明。
解决方法:去掉void chushihua(linklist *l)函数,在主函数中加入l.next=NULL一句

板凳

能给一个仔细的程序吗  
我改了之后还是不行吗
谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册