zoukankan      html  css  js  c++  java
  • 顺序表应用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
    ",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 }
  • 相关阅读:
    再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法
    Linux安装aria2
    POJ 3335 Rotating Scoreboard 半平面交
    hdu 1540 Tunnel Warfare 线段树 区间合并
    hdu 3397 Sequence operation 线段树 区间更新 区间合并
    hud 3308 LCIS 线段树 区间合并
    POJ 3667 Hotel 线段树 区间合并
    POJ 2528 Mayor's posters 贴海报 线段树 区间更新
    POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
    POJ 3468 A Simple Problem with Integers 线段树成段更新
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12584062.html
Copyright © 2011-2022 走看看