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 }
  • 相关阅读:
    表达式for loop
    用户输入
    字符编码
    变量字符编码
    Python安装
    Python 2 or 3?
    Python解释器
    2017中国大学生程序设计竞赛
    Educational Round 27
    Round #429 (Div.2)
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12584062.html
Copyright © 2011-2022 走看看