重庆建设工程交易中心网站,外贸公司收款流程,互联网营销做什么,百度做网站好吗题目描述 在长度为n#xff08;n1000)的顺序表中可能存在着一些值相同的“多余”数据元素#xff08;类型为整型#xff09;#xff0c;编写一个程序将“多余”的数据元素从顺序表中删除#xff0c;使该表由一个“非纯表”#xff08;值相同的元素在表中可能有多个n1000)的顺序表中可能存在着一些值相同的“多余”数据元素类型为整型编写一个程序将“多余”的数据元素从顺序表中删除使该表由一个“非纯表”值相同的元素在表中可能有多个变成一个“纯表”值相同的元素在表中只能有一个。输入
第一行输入表的长度n 第二行依次输入顺序表初始存放的n个元素值。输出
第一行输出完成多余元素删除以后顺序表的元素个数 第二行依次输出完成删除后的顺序表元素。示例输入 12
5 2 5 3 3 4 2 5 7 5 4 3 示例输出 5
5 2 3 4 7 提示 用尽可能少的时间和辅助存储空间。 #include stdio.h #include stdlib.h #includemalloc.h #define LISTINCREASMENT 100 #define LISTSIZE 10 #define OVERFLOW -1 #define OK 1 typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize; }Sqlist; int SqInitialList(Sqlist L)//顺序表的初始化 { L.elem(ElemType *)malloc(LISTSIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length0; L.listsizeLISTSIZE; return OK; } int ListInsert(Sqlist L,int i,ElemType e)//顺序表元素的添加 { if(i1||iL.length1)printf(ERROR!); if(L.lengthL.listsize) { ElemType*newbase(ElemType*)realloc(L.elem,(L.listsizeLISTINCREASMENT)*sizeof(ElemType));//动态变量的空间扩充 if(!newbase) return OVERFLOW; //判断是否空间开辟成功 L.elemnewbase; L.listsizeLISTINCREASMENT; } ElemType*q(L.elem[i-1]); ElemType*p; for(p(L.elem[L.length-1]);pq;--p) *(p1)*p; *qe; L.length; return OK; } void purge(Sqlist L)//顺序表相同元素的删除位移算法 { int i,b,j,k; for(i0;iL.length-1;i) { ji1; while(jL.length) if(L.elem[j]!L.elem[i]) j; else { for(kj1;kL.length;k) L.elem[k-1]L.elem[k]; --L.length; } } } int main() { Sqlist L;//顺序表的定义 int t1,d,n; scanf(%d,n); SqInitialList(L);//顺序表的初始化 for(t1;tn;t) { scanf(%d,d); ListInsert(L,t,d);//顺序表元素的添加 } purge(L);//顺序表相同元素删除后的顺序表 printf(%d\n,L.length);//此顺序表的长度 for(t1;tL.length;t)//顺序表的所有元素输出 if(t!L.length) printf(%d ,L.elem[t-1]); else printf(%d\n,L.elem[t-1]); return 0; }