C数据结构中的删除顺序表中值相同的多余的元素
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C数据结构中的删除顺序表中值相同的多余的元素
题目如下:
按下面两种情况分别编写算法删除顺序表中值相同的多余元素.
1) 顺序表元素值递增有序.
2)顺序表元素值无序.
由于时间原因,两个给合成一个来编了,比方先给顺序表赋值为:0,1,2,3,4,4,6,7,8,9,4
把里面多余的4删除,
实现代码:
#include
#include
#define dint int
#define max 100
typedef struct//定义顺序表的结构体
{
dint data[max];
int last;
}sqlist;
void del(sqlist *a)//删除函数,要删除多余元素时调用
{
int i,j,k;
dint temp;//定义一个临时变量,用来放循环时的变量,用他来比较里面有没重复的元素for(i=0;i<=a->last;i++)//循环开始
{
temp=a->data;//.把顺序表中的数据一个个和其它数据比较,看有重复没
for(j=i+1;j<=a->last;j++)//和其它数比较开始
if(temp==a->data[j])//判断是否相等,相等则进入下一循环,把重复的删去
{
for(k=j;k<=a->last;k++)//删除循环开始
{
a->data[k]=a->data[k+1];
}
a->last--;//删除成功,顺序表结构中元素个数减一
}
}
}
void main()
{
int i;
sqlist lb;//定义顺序表结构体
st=0;//给表置空
for(i=0;i<10;i++)//给表赋值,分别放入0,1,2,3,4,4,6,7,8,9
{
if(i==5)
{
lb.data=i-1;
printf(" %d",lb.data);
lb.data[++i]=i;
st++;
}
else
lb.data=i;
st++;
printf(" %d",lb.data);
}
lb.data[st]=4;//再放入一个4,购成第二小题的不是顺序删除st++;
printf(" %d",lb.data[st-1]);//输出,原来的元素
printf("\n");
del(&lb);//进行删除调用函数
for(i=0;i<=st;i++)//输出删除后的值
printf(" %d",lb.data);
printf("\n");
}
写得这么详细了,如还有不明白的,赶快提出吧,
[ 此贴被腾马在2007-