首页 > 学院 > 开发设计 > 正文

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

2019-11-06 08:09:59
字体:
来源:转载
供稿:网友

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

TimeLimit: 1000MS Memory Limit: 650KB

SubmitStatistic

PRoblemDescription

一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个)。要求:      1、必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能;      2、本题的目标是熟悉顺序表的移位算法,因此题目必须要用元素的移位实现删除;

Input

 第一行输入整数n,代表下面有n行输入;之后输入n行,每行先输入整数m,之后输入m个数据,代表对应顺序表的每个元素。

Output

 输出有n行,为每个顺序表删除多余元素后的结果

ExampleInput

4

56 9 6 8 9

35 5 5

59 8 7 6 5

101 2 3 4 5 5 4 2 1 3

ExampleOutput

69 8

5

98 7 6 5

12 3 4 5

Hint

 

Author

 

#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>#include<queue>#include<deque>#include<stack>#include <iostream>using namespace std;typedef struct{  int *zhi;  int len;}list;void creatlist(list &l,int n){   l.zhi = new int [10001];   l.len = 0;   for(int i=0;i<n;i++)   {     cin>>l.zhi[i];     l.len++;   }}void dellist(list &l){   int n,i,j;   n = 0;   while(n<l.len-1)   {       for(i=n+1;i<l.len;i++)       {            if(l.zhi[i]==l.zhi[n])            {               for(j=i;j<l.len;j++)               {                  l.zhi[j] = l.zhi[j+1];               }               l.len--;               i--;            }       }       n++;   }}int main(){   //freopen("ass","w",stdout);    int n,m;    list node;    cin>>m;    while(m--)    {       cin>>n;       creatlist(node,n);       dellist(node);       int i;       for(i=0;i<node.len;i++)       {          if(i==node.len-1)          cout<<node.zhi[i]<<endl;          else          cout<<node.zhi[i]<<" ";       }    }    return 0;}/***************************************************User name: jk160505徐红博Result: AcceptedTake time: 44msTake Memory: 204KBSubmit time: 2017-01-13 23:48:02****************************************************/
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表