顺序表应用2:多余元素删除之建表算法
来源:互联网 发布:网络英语外教一对一 编辑:程序博客网 时间:2024/06/06 15:00
这道题的主要思想是在已经建好的表的基础上,利用旧表申请的空间,删除冗余元素。
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define LISTSIZE 10000
typedef struct{
int *elem;
int length;
int listsize;
}Sqlist;
int Initialist(Sqlist *L){/*顺序表的初始化*/
L->elem=(int *)malloc(LISTSIZE*sizeof(Sqlist));
if (!L->elem) exit(-1);/*存储分配失败*/
L->length=0;
L->listsize=LISTSIZE;
return 1;
}
int Insertlist(Sqlist *L,int i,int e){
if (i<1||i>L->length+1) printf("ERROR");
int *q=&(L->elem[i-1]);
int *p;
for (p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
L->length++;
return 1;
}
void Purge(Sqlist *L){/*在原来表的基础上建立一个新表;*/
int k,i,j,m;
k=-1;//k指向新表的表尾;
m=L->length;//m表示旧表的长度;
for (i=0;i<m;i++){/*将旧表中的元素依次与新表中的元素比较;*/
j=0;
while (j<=k&&L->elem[j]!=L->elem[i])//让新表中的元素依次与旧表中的元素比较;
{
++j;
}
if (k==-1||j>k)
L->elem[++k]=L->elem[i];
L->length=k+1;//改变表长;
}
}
int main(){
int m;
scanf("%d",&m);
while (m){
Sqlist L;
int n,d,i;
scanf("%d",&n);
Initialist(&L);
for (i=1;i<=n;i++){
scanf("%d",&d);
Insertlist(&L,i,d);
}
Purge(&L);
for (i=1;i<=L.length;i++)
printf("%d ",L.elem[i-1]);
printf("\n");
m--;
}
return 0;
}
- 暑假集训二顺序表-顺序表应用2:多余元素删除之建表算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- 顺序表应用1:多余元素删除之移位算法
- C语言程序设计谭浩强版 五
- The beginning
- The content of the adapter has changed but ListView did not receive a notification的解决方案
- 初步理解android的MediaScanner(1)
- linux--tomcat安装
- 顺序表应用2:多余元素删除之建表算法
- 图标素材网站
- 使用ArrayList对大小写字母的随机打印
- Android开发之蓝牙通信(二)
- Hibernate二级缓存的全局配置
- Hibernate1
- 高速公路(freeway)
- sql 杂文
- android studio 导入eclipse项目,程序真机运行中文显示乱码