| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1472 人关注过本帖
标题:单链表的插入与删除(改错)
只看楼主 加入收藏
肖肖云南
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-15
收藏
 问题点数:0 回复次数:11 
单链表的插入与删除(改错)

请帮我看一下这个单链表的插入与删除问题,有一处错误。
谢谢


#include<stdio.h>
#include<stdlib.h>
#define list_init_size 100
#define listincrement 10
#define overflow -2
typedef int status;
typedef int elemtype;
typedef struct
{
elemtype *elem;
int length;
int listsize;
} sqlist;
status initlist_sq(sqlist &L)
{
L.elem=(elemtype *)malloc(list_init_size * sizeof(elemtype));
if(!L.elem) exit(overflow);
L.length=0;
L.listsize=list_init_size;
return 1;
}
status listinsert_sq(sqlist &L, int i ,elemtype e)
{
int * q , *p ,* newbase;
if(i<1 || i>L.length + 1) return 0;
if(L.length >= L.listsize)
{
newbase=(elemtype *)realloc(L.elem,(L.listsize+listincrement) * sizeof(elemtype));
if(!newbase) exit (overflow);
L.elem=newbase;
L.listsize+=listincrement;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]) ;p>=q ;--p)
*(p+1) = *p;
*q = e;
++L.length;
return 1;
}
status listdelete_sq(sqlist &L, int i, elemtype &e)
{
int *p ,*q ;
if((i<1) || (i>L.length)) return 0;
p=&(L.elem[i-1]);
e=* p;
q=L.elem + L.length - 1;
for(++p ;p<=q ;++p)
*(p-1)=*p;
--L.length;
return 1;
}
status locateelem_sq(sqlist &L, elemtype e)
{
for(int pass=1 ;pass<=L.length ;pass++)
{
if(L.elem[pass-1]==e)
return pass;
}
return 0;
}
int main()
{
int i, e, swich_sq, pa;
sqlist L;
initlist_sq(L);
printf("请设置字符的长度:\n");
scanf("%d",&L.length);
if(L.length<=0 || L.length>list_init_size)
{
printf("错误的输入!\n");
return 0;
}
for( pa=1;pa<=L.length; pa++)
{
printf("请输入数组第%d个数!\n",pa);
scanf("%d",&L.elem[pa-1]);
}
do{
printf("\n\n当前的数是: ");
for (pa=0;pa<L.length;pa++)
{
printf("%d ",L.elem[pa]);
}
printf("\n请输入要执行的操作:\n 1,插入一个数\n 2,删除一个数\n 3,查找一个数\n 0,退出程序\n");
scanf("%d",&swich_sq);
switch(swich_sq)
{
case 1:
printf("请输入要插入数的位置:\n");
scanf("%d",&i);
if (i>=1 && i<=L.length)
{
printf("请输入要插入的数的值:\n");
scanf("%d",&e);
listinsert_sq(L,i,e);
}
else printf("\n\n\n输入不正确!\n");
break;
case 2:
printf("请输入要删除的数的序号:\n");
scanf("%d",&i);
if (i>=1 && i<=L.length)
{
listdelete_sq(L,i,e);
printf("你删除的数是L.elem[%d] = %d",i-1,e);
}
else printf("\n\n\n你的输入不正确!\n");
break;
case 3:
printf("请输入要查找的数:\n");
scanf("%d",&e);
if (locateelem_sq(L,e)!=0)
{
printf("你查找的数在结构中,并且是第%d个数!\n",locateelem_sq(L,e));
}
else printf("\n\n\n你输入的数不在结构中!\n");
break;
}
}
while (swich_sq != 0);
free (L.elem);

}

搜索更多相关主题的帖子: 单链 改错 删除 
2007-10-17 13:57
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
建议楼主写点注释,不然很费时的!
2007-10-17 15:18
肖肖云南
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-15
收藏
得分:0 
这个都是网上找的我不会啊
2007-10-18 08:21
ondy
Rank: 1
等 级:新手上路
威 望:1
帖 子:88
专家分:0
注 册:2007-9-4
收藏
得分:0 
......

晕哦
链表的删除和插入不难

2007-10-18 10:30
肖肖云南
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-15
收藏
得分:0 
那请赶紧帮我看看错在哪呀,谢谢啦。
2007-10-19 16:06
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#define list_init_size 100
#define listincrement 10
#define overflow -2
typedef int status;
typedef int elemtype;
typedef struct
{
elemtype *elem;
int length;
int listsize;
} sqlist;
/**************************************************/
//创建
status initlist_sq(sqlist &L)
{
L.elem=(elemtype *)malloc(list_init_size * sizeof(elemtype));
if(!L.elem) exit(overflow);
L.length=0;
L.listsize=list_init_size;
return 1;
}
/***************************/
//插入
status listinsert_sq(sqlist &L, int i ,elemtype e)
{
int * q , *p ,* newbase;
if(i<1 || i>L.length + 1) return 0;
if(L.length >= L.listsize)
{
newbase=(elemtype *)realloc(L.elem,(L.listsize+listincrement) * sizeof(elemtype));
if(!newbase) exit (overflow);
L.elem=newbase;
L.listsize+=listincrement;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]) ;p>=q ;--p)
*(p+1) = *p;
*q = e;
++L.length;
return 1;
}
/*************************/
//删除
status listdelete_sq(sqlist &L, int i, elemtype &e)
{
int *p ,*q ;
if((i<1) || (i>L.length)) return 0;
p=&(L.elem[i-1]);
e=* p;
q=L.elem + L.length - 1;
for(++p ;p<=q ;++p)
*(p-1)=*p;
--L.length;
return 1;
}
/***************************/
//定位
status locateelem_sq(sqlist &L, elemtype e)
{
for(int pass=1 ;pass<=L.length ;pass++)
{
if(L.elem[pass-1]==e)
return pass;
}
return 0;
}
/*************************/
int main()
{
int i, e, swich_sq, pa;
sqlist L;
initlist_sq(L);
printf("请设置字符的长度:\n");
scanf("%d",&L.length);
if(L.length<=0 || L.length>list_init_size)
{
printf("错误的输入!\n");
return 0;
}
for( pa=1;pa<=L.length; pa++)
{
printf("请输入数组第%d个数!\n",pa);
scanf("%d",&L.elem[pa-1]);
}
do{
printf("\n\n当前的数是: ");
for (pa=0;pa<L.length;pa++)
{
printf("%d ",L.elem[pa]);
}
printf("\n请输入要执行的操作:\n 1,插入一个数\n 2,删除一个数\n 3,查找一个数\n 0,退出程序\n");
scanf("%d",&swich_sq);
switch(swich_sq)
{
case 1:
printf("请输入要插入数的位置:\n");
scanf("%d",&i);
if (i>=1 && i<=L.length)
{
printf("请输入要插入的数的值:\n");
scanf("%d",&e);
listinsert_sq(L,i,e);
}
else printf("\n\n\n输入不正确!\n");
break;
case 2:
printf("请输入要删除的数的序号:\n");
scanf("%d",&i);
if (i>=1 && i<=L.length)
{
listdelete_sq(L,i,e);
printf("你删除的数是L.elem[%d] = %d",i-1,e);
}
else printf("\n\n\n你的输入不正确!\n");
break;
case 3:
printf("请输入要查找的数:\n");
scanf("%d",&e);
if (locateelem_sq(L,e)!=0)
{
printf("你查找的数在结构中,并且是第%d个数!\n",locateelem_sq(L,e));
}
else printf("\n\n\n你输入的数不在结构中!\n");
break;
}
}
while (swich_sq != 0);
free (L.elem);

方寸之内,剖天下; 方坛之内,析自我;
2007-10-19 21:57
肖肖云南
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-15
收藏
得分:0 
这个还是有错啊
2007-10-23 08:12
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

我只是捎加了注释;你的错误很多啊!


方寸之内,剖天下; 方坛之内,析自我;
2007-10-23 12:18
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#define list_init_size 100
#define listincrement 10
#define overflow -2
typedef int status;
typedef int elemtype;
typedef struct
{
elemtype *elem;
int length;
int listsize;
} sqlist;
/**************************************************/
//创建
status initlist_sq(sqlist &L)
{
L.elem=(elemtype *)malloc(list_init_size * sizeof(elemtype));
if(!L.elem) exit(overflow);
L.length=0;
L.listsize=list_init_size;
return 1;
}
/*****************************/
/*插入*/
status listinsert_sq(sqlist &L, int i ,elemtype e)
{
int * q , *p ,* newbase;
if(i<1 || i>L.length + 1) return 0;
if(L.length >= L.listsize)
{
newbase=(elemtype *)realloc(L.elem,(L.listsize+listincrement) * sizeof(elemtype));
if(!newbase) exit (overflow);
L.elem=newbase;
L.listsize+=listincrement;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]) ;p>=q ;--p)
*(p+1) = *p;
*q = e;
++L.length;
return 1;
}
/***************************/
/*删除*/
status listdelete_sq(sqlist &L, int i, elemtype &e)
{
int *p ,*q ;
if((i<1) || (i>L.length)) return 0;
p=&(L.elem[i-1]);
e=* p;
q=L.elem + L.length - 1;
for(++p ;p<=q ;++p)
*(p-1)=*p;
--L.length;
return 1;
}
/*****************************/
/*定位*/
status locateelem_sq(sqlist &L, elemtype e)
{
for(int pass=1 ;pass<=L.length ;pass++)
{
if(L.elem[pass-1]==e)
return pass;
}
return 0;
}
/***************************/
int main()
{
int i, e, swich_sq, pa;
sqlist L;
initlist_sq(L);
printf("请设置字符的长度:\n");
scanf("%d",&L.length);
if(L.length<=0 || L.length>list_init_size)
{
printf("错误的输入!\n");
return 0;
}
for( pa=1;pa<=L.length; pa++)
{
printf("请输入数组第%d个数!\n",pa);
scanf("%d",&L.elem[pa-1]);
}
do{
printf("\n\n当前的数是: ");
for (pa=0;pa<L.length;pa++)
{
printf("%d ",L.elem[pa]);
}
printf("\n请输入要执行的操作:\n 1,插入一个数\n 2,删除一个数\n 3,查找一个数\n 0,退出程序\n");
scanf("%d",&swich_sq);
switch(swich_sq)
{
case 1:
printf("请输入要插入数的位置:\n");
scanf("%d",&i);
if (i>=1 && i<=L.length)
{
printf("请输入要插入的数的值:\n");
scanf("%d",&e);
listinsert_sq(L,i,e);
}
else printf("\n\n\n输入不正确!\n");
break;
case 2:
printf("请输入要删除的数的序号:\n");
scanf("%d",&i);
if (i>=1 && i<=L.length)
{
listdelete_sq(L,i,e);
printf("你删除的数是L.elem[%d] = %d",i-1,e);
}
else printf("\n\n\n你的输入不正确!\n");
break;
case 3:
printf("请输入要查找的数:\n");
scanf("%d",&e);
if (locateelem_sq(L,e)!=0)
{
printf("你查找的数在结构中,并且是第%d个数!\n",locateelem_sq(L,e));
}
else printf("\n\n\n你输入的数不在结构中!\n");
break;
}
}
while (swich_sq != 0);
free (L.elem);
return 0;
}
2007-10-23 12:29
肖肖云南
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-15
收藏
得分:0 
只有一个错啊?!?!
2007-10-23 16:26
快速回复:单链表的插入与删除(改错)
数据加载中...
 
   



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

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