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

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

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

Output

6 9 8
5
9 8 7 6 5
1 2 3 4 5

Hint

 1 #include<iostream>
 2 #include<stdio.h>
 3 #define listMax 100000
 4
 5 using namespace std;
 6
 7 typedef int element;
 8 typedef struct{
 9     element *elem;
10     int length;
11     int listSize;
12 }Elemlist;
13
14 void creat(Elemlist &L,int n){
15     L.elem = new int[listMax];
16     L.length = n;
17     L.listSize = listMax;
18 }
19
20 void input(Elemlist &L){
21     int i;
22     for(i = 0 ; i < L.length;i++){
23         scanf("%d",&L.elem[i]);
24     }
25 }
26
27 void del(Elemlist &L,int j){
28     int i;
29     for(i = j ; i < L.length;i++){
30         L.elem[i] = L.elem[i + 1];
31     }
32     L.length--;
33 }
34
35 void compare(Elemlist &L){
36     int i,j;
37     for(i = 0; i < L.length - 1;i++){
38         for(j = i + 1;j < L.length; j++){
39             if(L.elem[i] == L.elem[j]){
40                 del(L,j);
41                 j--;
42             }
43         }
44     }
45 }
46
47 void output(Elemlist &L){
48     int i;
49     for(i = 0; i < L.length - 1;i++){
50         printf("%d ",L.elem[i]);
51     }
52     printf("%d\n",L.elem[i]);
53 }
54
55 int main(){
56     Elemlist L;
57     int a,b;
58     scanf("%d",&a);
59     while(a--){
60         scanf("%d",&b);
61         creat(L,b);
62         input(L);
63         compare(L);
64         output(L);
65     }
66     return 0;
67 }

原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12584062.html

时间: 2024-07-29 13:09:22

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

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

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

线性表&gt;&gt;顺序表---&gt;逆置所有元素

1 /*顺序表中所有的元素逆置 2 * 3 */ 4 #include <iostream.h> 5 using namespace std; 6 7 int main(){ 8 void reverse_arr(int arr[],int n); 9 int a[]={0,1,2,3,4,5,6,7}; 10 int n=7; 11 reverse_arr(a,n); 12 for(int i=0;i<=n;i++){ 13 cout << a[i] << &q

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

一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),借助元素移位的方式,设计一个空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段. 注意:先将顺序表元素调整为符合要求的内容后,再做输出,输出过程只能用一个循环语句实现,不能分成两个部分. 输入 第一行输入整数n,代表下面有n行输入: 之后输入n行,每行先

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

顺序表应用4:元素位置互换之逆置算法 Time Limit: 10 ms Memory Limit: 570 KiB Problem Description 一个长度为len(1<=len<=1000000)的顺序表,数据元素的类型为整型,将该表分成两半,前一半有m个元素,后一半有len-m个元素(1<=m<=len),设计一个时间复杂度为O(N).空间复杂度为O(1)的算法,改变原来的顺序表,把顺序表中原来在前的m个元素放到表的后段,后len-m个元素放到表的前段.注意:先将顺序

在顺序表中插入一个元素

之前在创建了一个顺序表的功能函数,这个没有疑问,测试没有错误,但是在接下来的做插入功能的时候发现插入的时候用模块写,不调用这个创建的函数,很难做到这个.该怎么实现这个"高内聚,低耦合"的原则. #include <stdlib.h> #include "Orderfist.h" status InsertList_Sq( SqList L[] ) /* 在链表插入一个元素 */ { UINT32 Insert_position = 0U, Insert_

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

转自: https://blog.csdn.net/cckevincyh/article/details/45605261 设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性 先建立一个待插入的结点,然后依次与与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点. 算法如下: #include<stdio.h> #include<stdlib.h> #define MAXSIZE 20 #define OK 1 #def

3325=顺序表应用2:多余元素删除之建表算法

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int main() 5 { 6 int m,i,j,k,p,mark=1; 7 int math[10000]; 8 scanf("%d",&m); 9 while(m--) 10 { 11 int n; 12 p=0; 13 scanf("%d",&n); 14 for(i=0;

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

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int main() 5 { 6 int m,i,j,k,p,mark=1,n,t; 7 int math[1000000]; 8 scanf("%d",&n); 9 for(i=0; i<n; i++) 10 { 11 scanf("%d",&math[i]); 12 } 1

简单顺序表的插入,删除,指定位置,指定元素的插入删除操作

头文件 SeqList.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<stdio.h> #include<string.h> #include<assert.h> #define MAX_SIZE 10 typedef int DataType; typedef unsigned int size_t; typedef struct SeqList { DataType array[MAX_SIZE]; s