顺序表应用1:多余元素删除之移位算法

来源:互联网 发布:女生喜欢什么礼物知乎 编辑:程序博客网 时间:2024/05/17 07:13
Problem Description一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个)。要求:       1、必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能;       2、本题的目标是熟悉顺序表的移位算法,因此题目必须要用元素的移位实现删除; Input 第一行输入整数n,代表下面有n行输入;之后输入n行,每行先输入整数m,之后输入m个数据,代表对应顺序表的每个元素。 Output 输出有n行,为每个顺序表删除多余元素后的结果 Example Input45 6 9 6 8 93 5 5 55 9 8 7 6 510 1 2 3 4 5 5 4 2 1 3Example Output6 9 859 8 7 6 51 2 3 4 5Hint


#include<iostream>#include<stdlib.h>using namespace std;typedef struct {int *elem;int length;int listsize;}list;void creat(list &l,int n){l.elem=new int[101];if(!l.elem)exit(0);l.length=0;for(int i=0;i<n;i++){cin>>l.elem[i];l.length++;}l.listsize=101;}void listdel(list &l){int *p,*q;p=l.elem;q=l.elem+l.length;for(;p<q;p++){for(int *t=p+1;t<q;t++){if(*p==*t){for(int *k=t;k<q-1;k++){*k=*(k+1);}l.length--;q--;t--;}}}}int main(){int t,n;cin>>t;while(t--){cin>>n;list p;creat(p,n);listdel(p);for(int i=0;i<p.length;i++){if(i==p.length-1)cout<<p.elem[i]<<endl;elsecout<<p.elem[i]<<' ';}}return 0;}


阅读全文
0 0
原创粉丝点击