标题:[原创大家看看这个程序错在哪里!帮帮小弟!
只看楼主
仰天天蓝
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-10-2
 问题点数:0 回复次数:5 
[原创大家看看这个程序错在哪里!帮帮小弟!

这是个数据结构的题目:大体的意思就是:用链式表进行插入和删除操作!
就两个错误:其中一个是:
void Initlist(Linklist*L){*L=null}错误!
还有一个是:Listinsert(Linklist L,int pos,char x[3]);错误!
大家帮帮忙忙,在这先谢过了!
下面是程序:


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 20
#define M 20
#define null 0
typedef char Elemtype;
struct node
{
Elemtype data[N];
struct node*next;
}Lnode,*Linklist;

void Initlist(Linklist*L)//提示这错误!
{
*L=null;
}

status Listinsert(Linklist L,int pos,char w[3])//提示这错误
{
Linklist*p=L;
int j=0;
while (p&&j<pos-1)
{p=p->next;++j;}
if (!p||(j>pos-1)) return 0;
Linklist*s;
s=(Linklist)malloc(sizeof(Lnode));
strcpy(s->data,w);
s->next=p->next;
p->next=s;
return 1;
}

status Listdelete(Linklist L,Elemtype w[3])
{
Linklist p,q;
p=L;
while(p->next&&strcmp(p->data,w)!=0)
{p=p->next;++j;}
if(!(p->next)) return 0;
if(strcmp(p->data,w)==0)
{ q=p->next;
p->next=q->next;
free(q);
return 1;
}

void display(Linklist L)
{
Linklist q;
q=L;
printf("the list is :\n");
if(q==null)
printf("the list is null\n!");
else if(q->next==null)
printf("%s",q->data);
else
{
while (q->next!=null)
{printf("%s------->",q->data);
q=q->data;
}
printf("%s",q->data);
}
printf("\n");
}


int main()
{
Linklist L;
int flag=1,i,size,select,k;
char x[3],r[3];
char* T[M]={"APr","Jan","Jul","Jun","Mar","Mag"};
size=sizeof(*T)/3;
int i;
Initlist(&L);
printf("the data or arrange is:\n");
for(i=0;i<size;i++)
printf("%s",*T[i]);
while(flag)
{
printf("1----------> insert \n");
printf("2----------> delete \n");
printf("3----------> out \n");
printf("please input your select\n ");
scanf("%d",&select);
switch(select)
{
case 1:{printf("input your position\n");
scanf("%d",&k);
printf("input your data\n");
scanf("%s",x);
Listinsert(&L,k,x);
display(L);
prinf("\n");
}
break;
case 2:{ printf("\n input the data of your delete \n");
scanf("%s",r);
Listdelete(&L,r);
printf("\n");
display(L);
printf("\n");
}
break;
case 3: flag=0;
break;
}

搜索更多相关主题的帖子: null 
2006-10-30 19:23
仰天天蓝
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-10-2
得分:0 

各位帮帮忙!

2006-10-30 19:37
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
得分:0 

这个程序 你还是自己好好分析下过程吧 要改得改挺多地方的
typedef int status;//缺了
还有链表指针的定义 一会是Linklist** 一会是Linklist * 很乱的
还有一些语句书写错误....先自己看看吧


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-30 21:19
仰天天蓝
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-10-2
得分:0 

谢谢楼上,我先看看,楼主,麻烦说的详细点!

2006-10-30 21:27
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
以下是引用仰天天蓝在2006-10-30 21:27:09的发言:

谢谢楼上,我先看看,楼主,麻烦说的详细点!

,如果是语法上问题,自己解决,如是逻辑上错误咱们一起解决


谁有强殖装甲第二部,可以Q我460054868
2006-10-30 21:34
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
得分:0 
给你个提示,定义了数据类型后 用的时候要注意的

typedef struct node
{
Elemtype data[N];
struct node*next;
}Lnode,*Linklist;

void Initlist(Linklist *L)//L是指向指针的指针变量,和其他函数里的类型要注意区别,传递参数时小心
{
//if((*L=(Linklist*)malloc(sizeof(Linklist)))==null exit(1);//这句最好也加上,毕竟程序员要考虑内存的实际情况
(*L)->next=null;//头指针应该这样初始化啊
}

在看看其他函数中又没这样的错误语句.. Linklist*p=L;//这个是什么了,Linklist p=L;就可以了

... ...
主函数中 函数的调用..

Initlist(&L);//正确
Listinsert(&L,k,x);//错误..下面调用的都出现这样额错误,L是本身就是指针,怎么还用&L,这些函数里参数与Initlist()可是不同的哦

.... 还有一些语句错误 ..慢慢看看吧 逐个函数分解着来看就行了



unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-30 21:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-99757-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.175012 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved