C数据结构中的删除顺序表中值相同的多余的元素

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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-

相关文档
最新文档