Problem Description

一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个)。

要求:

       1、必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能;

       2、本题的目标是熟悉顺序表的移位算法,因此题目必须要用元素的移位实现删除;


Input

第一行输入整数n,代表下面有n行输入;

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


Output

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


Sample Input

4

5 6 9 6 8 9

3 5 5 5

5 9 8 7 6 5

10 1 2 3 4 5 5 4 2 1 3


Sample Output

6 9 8

5

9 8 7 6 5

1 2 3 4 5

题解:建一个顺序表,从第一个开始遍历,位移删重复元素。

/** By Mercury_LC */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
int *elem;
int len;
};
void CreatList(int n, struct node &list)
{
list.elem = (int *)malloc(101 * sizeof(int));
list.len = n;
for(int i = 0; i < n; i ++)
{
scanf("%d",&list.elem[i]);
}
}
void Move(struct node &list)
{
for(int i = 0; i < list.len; i ++)
{
for(int j = i + 1; j < list.len;)
{
if(list.elem[i] == list.elem[j])
{
for(int k = j; k < list.len; k ++)
{
list.elem[k] = list.elem[k + 1];
}
list.len --;
}
else j ++;
}
}
for(int i =0; i < list.len; i ++)
{
if(i == 0)printf("%d",list.elem[i]);
else printf(" %d",list.elem[i]);
}
printf("\n");
}
int main()
{
int n, m;
scanf("%d",&n);
while(n --)
{
struct node list;
scanf("%d",&m);
CreatList(m, list);
Move(list);
}
return 0;
}

顺序表应用1:多余元素删除之移位算法(SDUT 3324)的更多相关文章

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

    顺序表应用1:多余元素删除之移位算法 Time Limit: 1000 ms Memory Limit: 650 KiB Submit Statistic Discuss Problem Descri ...

  2. SDUT OJ 顺序表应用2:多余元素删除之建表算法

    顺序表应用2:多余元素删除之建表算法 Time Limit: 3 ms Memory Limit: 600 KiB Submit Statistic Discuss Problem Descripti ...

  3. SDUT OJ 顺序表应用4:元素位置互换之逆置算法

    顺序表应用4:元素位置互换之逆置算法 Time Limit: 10 ms Memory Limit: 570 KiB Submit Statistic Discuss Problem Descript ...

  4. SDUT OJ 顺序表应用3:元素位置互换之移位算法

    顺序表应用3:元素位置互换之移位算法 Time Limit: 1000 ms Memory Limit: 570 KiB Submit Statistic Discuss Problem Descri ...

  5. 设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。

    原创,转载请注明出处.https://www.cnblogs.com/yangf428/p/11254370.html 天勤例题[2-1]: 设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺 ...

  6. 顺序表应用3:元素位置互换之移位算法(SDUT 3326)

    题解:用一个for,循环m次,每次都把最前面的放到最后面,就可以了. #include <stdio.h> #include <stdlib.h> #include <s ...

  7. 顺序表应用2:多余元素删除之建表算法(SDUT 3325)

    题解: 每次询问一遍,如果已经存在就不用插入表中了. #include <stdio.h> #include <stdlib.h> #include <string.h& ...

  8. 顺序表应用4-2:元素位置互换之逆置算法(数据改进)(SDUT 3663)

    Problem Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1&l ...

  9. 顺序表添加与删除元素以及 php实现顺序表实例

    对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);  ...

随机推荐

  1. 8.perf top系统性能分析工具

    perf 是一个调查 Linux 中各种性能问题的有力工具. # perf --help  usage: perf [--version] [--help] COMMAND [ARGS]  The m ...

  2. HTTP协议探究(序章)

    1 HTTP协议基于TCP协议 (1)TCP三次握手连接 HTTP客户端(Chrome浏览器): IP:192.168.1.47 端口:59875 MSS:1460 HTTP服务器(Nginx服务器) ...

  3. Springboot 使用pageHelper实现分页查询

    本文链接:https://blog.csdn.net/qq_35387940/article/details/91530234

  4. C# WebForm 屏蔽输入框的验证

    按钮做界面跳转时,屏蔽输入框的验证可添加属性:  CausesValidation="FALSE" <form runat="server"> &l ...

  5. fish redux 个人理解

    fish redux 理解 fish redux是什么 Fish Redux 是一个基于 Redux 数据管理的组装式 flutter 应用框架, 它特别适用于构建中大型的复杂应用. 它的特点是配置式 ...

  6. VBA学习资料分享-4

    工作中经常要从数据库把数据跑出来放到EXCEL上,才能进行下一步的操作,那么VBA如何结合SQL提取数据呢?答案就是ADO. 声明和实例变量 引用法——引用Microsoft ActiveX Data ...

  7. vue中非父子组件的传值bus的使用

    非父子之间的组件传值,可以使用vuex.简单的状态管理,也可以用vue bus vue bus可以实现不同组件间.不同页面间的通信,比如我在A页面出发点击事件,要B页面发生变化,使用方法如下: 全局定 ...

  8. java Spring boot项目简单说明

    前言 一直从事.NET开发,但一直有种想去探索Java世界的冲动,今天终于有时间来尝试一下,以下是自己探索过程的简要记录. 一.开发工具 开发工具选用 IntelliJ IDEA社区版(免费),安装教 ...

  9. C++ STL 之 multimap案例之员工分组

    #include <iostream> #include <vector> #include <map> #include <string> #incl ...

  10. 每天一个Linux命令之:chage

    命令简介: 该命令用于密码时效管理.它可以修改账号和密码的有效期.对于chage命令的描述如下所示: The chage command changes the number of days betw ...