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

顺序表

题目描述

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

输入

第一行输入表的长度n;第二行依次输入顺序表初始存放的n个元素值。

输出

第一行输出完成多余元素删除以后顺序表的元素个数;第二行依次输出完成删除后的顺序表元素。

示例输入

12

5 2 5 3 3 4 2 5 7 5 4 3

示例输出

5

5 2 3 4 7

/..........示例代码如下(线性表实现)

 1 //线性顺序表
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #define MAXSIZE 1000 //线性表存储空间的初始分配量
 5 #define OK 1
 6 #define ERROR 0
 7 #define OVERFLOW -2
 8 typedef int elemType;//元素类型
 9 typedef struct
10 {
11  elemType *elem;//线性表首地址
12  int length;//当前的长度
13 } SqList;
14 //初始化一个空的线性表
15 int InitList_Sq(SqList *L)
16 {
17  L->elem=new elemType[MAXSIZE];
18  if(!L->elem)exit(OVERFLOW);//overflow
19  L->length=0;//初始表为空表
20  return OK;
21 }
22
23 //遍历顺序表
24 void TraverseList(SqList *L)
25 {
26  int i;
27  for(i=0; i<L->length; i++)
28  {
29   printf("%d ",L->elem[i]);
30  }
31  printf("\n");
32  return;
33 }
34 //向表尾插入元素
35 void InsertLast(SqList *L,elemType e)
36 {
37
38  if(L->length >= MAXSIZE)
39   return ;
40  L->elem[L->length]=e;
41  L->length++;
42  return;
43 }
44
45
46 void ListDelete(SqList *L,elemType i)//删除指定位置的线性表
47 {
48 // if((i<1)||(i>L->length)) return;
49  for(int j = i; j <= L->length-1; j++)
50   L->elem[j] = L->elem[j+1];
51
52  --(L->length);
53
54 }
55 //删除重复值
56 void DeleteElem(SqList *L)
57 {
58
59  for(int i = 0 ;i < L->length ;i++)
60  {
61   for(int j = i+1 ;j <= L->length-1 ;j++)
62   {
63    if(L->elem[i] == L->elem[j])
64    {
65     ListDelete(L,j);
66     j--;
67    }
68  }
69
70  }
71
72
73 }
74 int main()
75 {
76  SqList list1;
77  InitList_Sq(&list1);
78  int n;
79  scanf("%d",&n);
80  int i;
81  elemType temp;
82  for(i=0; i<n; i++)
83  {
84   scanf("%d",&temp);
85   InsertLast(&list1,temp);
86  }
87
88
89
90  DeleteElem(&list1) ;
91  printf("%d\n",list1.length);
92  TraverseList(&list1);
93
94  return 0;
95 }  

原文地址:https://www.cnblogs.com/didiaodidiao/p/9029507.html

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

数据结构(删除多余元素)的相关文章

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

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

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

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

数据结构之 线性表---单链表的操作B(先逆序+再删除重复元素)

数据结构上机测试2-2:单链表操作B Time Limit: 1000MS Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个). 输入 第一行输入元素个数n: 第二行输入n个整数. 输出 第一行输出初始链表元素个数: 第二行输出按照逆位序所建立的初始链表: 第三行输出删除重复元素后的单链表元素个数: 第四行输出删除重复元素后的单链表. 示例输入 10 21 30 14 55 32 63

(每日算法)LeetCode --- Remove Duplicates from Sorted Array II (删除重复元素II)

Remove Duplicates from Sorted Array II Leetcode 题目: Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2

javascript删除JSON元素

首先要搞清JSON的数据格式,我这里所说的JSON都是指javascript中的. JSON数据是由对象和数组数据结构组成,我们只要学会javascript中对对象和数组的删除方法即可对JSON项进行删除操作 javasscript删除数组的3种方法 1,用shift()方法 shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined copytext var chaomao=[1,2,3,4,5] var chaomao.shift() //得到1 alert(ch

检测和删除多余无用的css

本文主要讲解如何检测页面中多余无用的css. 1.chrome浏览器 F12审查元素的Audits 说明:使用Audits,会检测出页面中没有用到的css,需要手动删除多余的css:同时需要说明的是检测出多余无用的css块,而不是某一行css. 2.CSS usage插件 (1)安装Firefox浏览器 (2)安装firebug Firefox浏览器--添加附件--搜索插件--安装 (3)安装css usage 步骤同安装firebug一样. (4)检测 重要说明:可以导出干净的css 总结:以

jQuery 删除HTML元素

jQuery使用下面两个方法来删除或是清空某个HTML元素. remove() – 删除指定的元素(包括其子元素) empty() – 清空指定元素的子元素 例如: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JQuery Demo</title> <script src="scripts/jquery-1.9.1.js&q

怎样才能彻底地删除多余输入法软件

怎样才能彻彻底底地删除输入法软件 [删除多余系统注册表] 开始/运行,在对话框中输入"Regedit"(不含引号)调出注册表进行如下逐项操作: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layouts\ 保留. 00000409 (默认) - 美国英语 (禁止删除) 00000804 中文 (简体) - 美式键盘 (禁止删除) E0010804 中文 (简体) - 全拼 E0030804 中文 (简体) -

C语言 &#183; 删除重复元素

算法提高 11-2删除重复元素 时间限制:10.0s   内存限制:256.0MB 问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要求写成函数,函数内部使用指针操作. 样例输入 1223445667889 样例输出 13579 样例输入 else 样例输出 ls 数据规模和约定 字符串数组最大长度为100. 1 /* 2 思路: 3 将字符串存入字符数组a中,设将值拷贝给数组b,遍历b的每个元 4 素,与a中的每个元素比较,有相同则b中对应元