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

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

Description

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

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 MaxSize 100000
 4 using namespace std;
 5
 6 typedef int element;
 7 typedef struct node{
 8     int data[MaxSize];
 9     int last;
10 }list;
11
12 void init(list &L,int b){
13     int i;
14     for(i = 0 ; i < b;i++){
15         L.data[i] = 0;
16     }
17     L.last = b;
18 }
19
20 void CreatDel(list &L){
21     int i,j;
22     scanf("%d",&L.data[0]);
23     for(i = 1 ;i < L.last;i++){
24         scanf("%d",&L.data[i]);
25         //printf("%d \n",L.data[i]);
26         for(j = 0; j < i;j++){
27             if(L.data[j] == L.data[i]){
28                 i--;
29                 L.last--;
30             }
31         }
32     }
33 }
34
35 void output(list &L){
36     int i;
37     for(i = 0 ; i < L.last - 1;i++){
38         printf("%d ",L.data[i]);
39     }
40     printf("%d\n",L.data[i]);
41 }
42
43 int main(){
44     list L;
45     int a,b;
46     scanf("%d",&a);
47     while(a--){
48         scanf("%d",&b);
49         init(L,b);
50         CreatDel(L);
51         output(L);
52     }
53     return 0;
54 }

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

时间: 2024-08-29 15:18:21

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

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;

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

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

单链表的初始化,整表创建,单个元素插入,单个元素删除,整表删除等操作

很早之前学的数据结构,放了很久后,以致对里面的一些操作都有些遗忘,故而再次温习了一下数据结构,并整理了一点儿笔记,放在这里和大家分享, 我的代码注释的已经很详细了,对于容易出错的地方我也都有标注,欢迎大家交流. #include "stdafx.h" #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include <time.h> #define OK 1 #defi

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

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

Oracle 创建表空间、临时表空间、创建用户并指定表空间、授权,删除用户及表空间

/* 说明:若已经存在相应的用户和表空间,则需要先删除相应的用户和表空间 然后再全部重新建立 */ --删除用户 drop user USERNAME cascade; --删除表空间 drop tablespace DATA_TEMP including contents and datafiles; drop tablespace DATA including contents and datafiles; --创建临时表空间 create temporary tablespace DATA

sqlite3 判断表、视图是否存在、获得建表语句

1,判断表是否存在: SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "Dom" 结果如下: 2.判断视图是否存在: SELECT count(*) FROM sqlite_master WHERE type = "view" AND name = "myView" 结果如下: type='view'判断视图.结果>0就是有这个视图

数据结构之 线性表---单链表的应用(重复元素删除)

数据结构上机测试1:顺序表的应用 Time Limit: 1000MS Memory limit: 65536K 题目描述 在长度为n(n<1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只能有一个). 输入 第一行输入表的长度n: 第二行依次输入顺序表初始存放的n个元素值. 输出 第一行输出完成多余元素删除以后顺序表的元素个数: 第

数据结构(删除多余元素)

顺序表 题目描述 在长度为n(n<1000)的顺序表中可能存在着一些值相同的"多余"数据元素(类型为整型),编写一个程序将"多余"的数据元素从顺序表中删除,使该表由一个"非纯表"(值相同的元素在表中可能有多个)变成一个"纯表"(值相同的元素在表中只能有一个). 输入 第一行输入表的长度n:第二行依次输入顺序表初始存放的n个元素值. 输出 第一行输出完成多余元素删除以后顺序表的元素个数:第二行依次输出完成删除后的顺序表元素

一次性删除数据库所有表和所有存储过程 SQL语句

今天转移数据库数据,需要把数据库原来的表和存储过程清空.删除所有的表:如果由于外键约束删除table失败,则先删除所有约束: --/第1步**********删除所有表的外键约束*************************/ DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype =