数据结构: 从顺序表中删除其值在给定值s与t之间(要求s小于t)的所有元素

[复制链接]
查看11 | 回复1 | 2011-4-11 01:26:41 | 显示全部楼层 |阅读模式
请大家帮我看看,怎么只可以删除s,t,中间的删除不了呢?
#includestdio.h
#includestdlib.h
#define list_init_size100
typedef struct
{
int*elem;
int length;
int listsize;
}sqlist;

//建立一个空表
initlist_sq(sqlist
l.length=0;

l.listsize=list_init_size;
return true;
}
//在position1处插入value1这个值
listinsert1_sq(sqlist
q=
for(p=p=q;--p)
*(p 1)=*p;
*q=value1;
l.length;
return true;
}
//删除下标为position2的数据
listdele_sq(sqlist
for(p=pp)
{

*p=*(p 1);
}

return true;
}



//主函数
void main()
{
sqlist list1;
initlist_sq(list1);
int number1,data1,s,t,count=0;
printf(\"请输入要输入的数据个数:\\n\");
scanf(\"%d\",
if(number1==0)
{
printf(\"顺序表为空表\\n\");
return;
}
printf(\"请依次输入要输入的数据:\\n\");
for(int i1=0;i1number1;i1)
{
scanf(\"%d\",
listinsert1_sq(list1,i1,data1);
}
printf(\"请依次输入要删除的数据段的最小值与最大值:\\n\");

scanf(\"%d\",

scanf(\"%d\",////////////这里出错,好奇怪,前一个输入没有问题,这里怎么会报错呢?

for(int i3=0;i3list1.length;i3)
{
if(list1.elem[i3]=s=t)
{
listdele_sq(list1,i3);
count;
}

}

for(int i4=0;i4list1.length-count;i4)
{
printf(\"%d\",list1.elem[i4]);
}


}
回复

使用道具 举报

千问 | 2011-4-11 01:26:41 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">删除第s个数据后,原来的第s 1个数据变成了第s个数据.因此,可如下修改:
if(list1.elem[i3]=s=t)
{
listdele_sq(list1,i3);
count;
i3--;//加,相当于把第i3 1个数据变成第i3个数据
}
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行