公司动态
顺序表应用1:多余元素删除之移位算法
Problem Description一个长度不超过10000数据的顺序表可能存在着一些值相同的“多余”数据元素类型为整型编写一个程序将“多余”的数据元素从顺序表中删除使该表由一个“非纯表”值相同的元素在表中可能有多个变成一个“纯表”值相同的元素在表中只保留第一个。要求1、必须先定义线性表的结构与操作函数在主函数中借助该定义与操作函数调用实现问题功能2、本题的目标是熟悉顺序表的移位算法因此题目必须要用元素的移位实现删除Input第一行输入整数n代表下面有n行输入之后输入n行每行先输入整数m之后输入m个数据代表对应顺序表的每个元素。Output输出有n行为每个顺序表删除多余元素后的结果Sample Input45 6 9 6 8 93 5 5 55 9 8 7 6 510 1 2 3 4 5 5 4 2 1 3Sample Output6 9 859 8 7 6 51 2 3 4 5#include stdio.h#include stdlib.hstruct node{int a[10000];int lenth;}; //定义顺序表void print(struct node *l,int n){int i;for(i0; in; i){if(in-1)printf(%d\n,l-a[i]);elseprintf(%d ,l-a[i]);}} //输出顺序表int main(){int n,m,i,j,k;struct node l;scanf(%d,n);while (n–){scanf(%d,m);for(i0; im; i){scanf(%d,l.a[i]);} //按照题目要求输入数据for(i0; im; i){for(ji1; jm; j){if(l.a[i]l.a[j]) //如果两个元素相同{for(kj; km-1; k){l.a[k]l.a[k1]; //删除后面的一个元素保留前面的元素}j–;m–;}}}print(l,m);}return 0;}