请大家帮我看看这个c语言的程序哪里出错了

[复制链接]
查看11 | 回复3 | 2010-10-25 20:55:20 | 显示全部楼层 |阅读模式
我用c语言编写了一个数据结构的单链表程序,调试的时候0错误,0警告,可就是运行的时候总是出错,请大家帮我看一下是哪里出错了,请把我的错误都列出来,让我能运行成最后的结果:
#include
#include
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef struct Node
{ElemType data;
struct Node *next;
}Node,*LinkList;
void InitList(LinkList l)
{
l=(LinkList)malloc(sizeof(Node));
l->next=NULL;
}
void CreateFromTail(LinkList l)
{Node *r,*s;
int flag=1;
r=l;
while(flag)
{int c;
scanf("%d",&c);
if(c!=0)
{s=(Node*)malloc(sizeof(Node));
s->data=c;
r->next=s;
r=s;
printf("%d",r->data);
}
else
{flag=0;
r->next=NULL;
}
}
}
Node *Locate(LinkList L,ElemType key)
{Node *p;
p=L->next;
{while(p!=NULL)
if(p->data!=key)
p=p->next;
else break;
}
return p;
}
int InsList(LinkList L,int i,ElemType e)
{Node *pre,*s;
int k;
pre=L;
k=0;

while(pre!=NULL&&knext;
k=k+1;
}

if(!pre)

{
printf("插入位置不合理!");
return ERROR;
}
s=(Node*)malloc(sizeof(Node));
s->data=e;

s->next=pre->next;

pre->next=s;
printf("%d",L);
return OK;
}
int DelList(LinkList L,int i,ElemType *e)
{Node *pre,*r;
int k;
pre=L;
k=0;
while(pre->next!=NULL && knext;
k=k+1;
}

if(!(pre->next))

{
printf("删除结点的位置i不合理!");
return ERROR;
}
r=pre->next;
pre->next=pre->next->next;

*e = r->data;
free(r);

printf("成功删除结点!");
return OK;
}
void dispList(LinkList L)
{
LinkList p=L->next;//定义一个结点指针p指向头结点的下一个结点
while(p)
//如果p不为空则循环
{
printf("%d",p->data);
p=p->next;
//移动指针p遍历链表
}
}
void main()
{LinkList l;
//防止指针悬空
Node *locate;
int a,b,i;
int *c;
InitList(l);
printf("请输入各元素的值:\n");
CreateFromTail(l);
printf("请输入查找的值:\n");
scanf("%d",&a);
locate=Locate(l,a);
if(locate!=0)
printf("该结点的值为:%d\n",locate->data);
else
printf("未找到此结点!\n");
printf("请输入插入的位置和元素:\n");
scanf("%d,%d",&i,&b);
InsList(l,i,b);
printf("请输入你要删除的位置:");
c = (int*)malloc(sizeof(int));
DelList(l,i,c);
dispList(l);
printf("被删除的元素是:%d\n",*c);
dispList(l);
}
请写出具体怎么去改,把哪里改成哪里,不要只写应该改哪里,那样的话还是不会

回复

使用道具 举报

千问 | 2010-10-25 20:55:20 | 显示全部楼层
void InitList(LinkList l){l=(LinkList)malloc(sizeof(Node));l->next=NULL;}指针没学会吧,指针也是变量啊,变量是局部的。对外面的指针变量没有影响,你应该传递链表地址。所以linklist类型定义改一下~
回复

使用道具 举报

千问 | 2010-10-25 20:55:20 | 显示全部楼层
我编译了一下,可以通过呀,你编译时有问题???
回复

使用道具 举报

千问 | 2010-10-25 20:55:20 | 显示全部楼层
晕 这么多?问老师或同学吧最好和对的同学对一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行