基础数据结构——顺序表(2)

Time Limit: 1000 MS    Memory Limit: 10240 K

Total Submit: 355(143 users) Total Accepted: 158(130 users)    Rating:         Special Judge: No

Description

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

Input

第一行输入表的长度n;

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

Output

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

第二行依次输出完成删除后的顺序表元素。

Sample Input

12

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

Sample Output

5

5 2 3 4 7


  数据结构,顺序表的实现

  顺序表是顺序结构实现的线性表,这道题考察的是顺序表的实现及基本操作。题目不难,是道入门题。

  注意输出格式,最后一个元素后面不能有空格。

  代码

 #include <iostream>
#include <malloc.h>
using namespace std;
#define MAXSIZE 1010
typedef struct { //定义顺序表类型
int data[MAXSIZE];
int length;
}SqList,*LinkSqList;
//顺序表初始化
void Init(SqList* &sq)
{
sq->length = ;
}
//插入
void Insert(SqList* &sq,int i,int x) //在第i位置插入元素值为x的元素
{
if(sq->length>=MAXSIZE){
cout<<"表已满,无法插入!"<<endl;
}
else if(i< || i>sq->length+){
cout<<"插入位置不合理!"<<endl;
}
else{
int j;
for(j=sq->length;j>=i;j--)
sq->data[j+] = sq->data[j];
sq->data[i] = x;
sq->length++;
}
}
//删除
void Delete(SqList* &sq,int i) //删除第i个元素
{
if(sq->length<=)
cout<<"表已空,无法删除!"<<endl;
else if(i< || i>sq->length)
cout<<"删除位置不合理!"<<endl;
else {
int j;
for(j=i+;j<=sq->length;j++)
sq->data[j-] = sq->data[j];
sq->length--;
}
}
//输出顺序表
void Print(SqList* &sq) //输出顺序表中所有元素
{
int i;
for(i=;i<=sq->length;i++){
cout<<sq->data[i];
if(i<sq->length)
cout<<' ';
}
cout<<endl;
}
//销毁顺序表
void Destroy(SqList* &sq) //销毁顺序表
{
free(sq);
}
//去重
void DeleteRepeat(SqList* &sq) //删掉重复元素
{
int i,j;
for(i=;i<=sq->length;i++)
for(j=;j<i;j++)
if(sq->data[j]==sq->data[i]){
Delete(sq,i);
i--;
break;
}
}
int main()
{
int i,n,t;
while(cin>>n){
LinkSqList sq = (SqList*)malloc(sizeof(SqList));
Init(sq);
//输入
for(i=;i<=n;i++){
cin>>t;
Insert(sq,i,t); //插入元素
}
//去重
DeleteRepeat(sq);
//输出
cout<<sq->length<<endl;
Print(sq);
Destroy(sq);
}
return ;
}

Freecode : www.cnblogs.com/yym2013

hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)的更多相关文章

  1. PHP数据结构之二 线性表中的顺序表的PHP实现

    线性表 (一)基本特点:最基本.最简单.最常用的一种数据结构 在这种结构中: 1.存在一个唯一的被称为“第一个”的数据元素: 2.存在一个唯一的被称为“最后一个”的数据元素: 3.除第一个元素外,每个 ...

  2. SDUT OJ 数据结构上机测试1:顺序表的应用

    数据结构上机测试1:顺序表的应用 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descri ...

  3. [一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构

    前言概述  本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义   class文件包含了java虚拟机指令集 和  符号表   以及若 ...

  4. php数据结构课程---1、数据结构基础介绍(程序是什么)

    php数据结构课程---1.数据结构基础介绍(程序是什么) 一.总结 一句话总结: 程序=数据结构+算法 设计好数据结构,程序就等于成功了一半. 数据结构是程序设计的基石. 1.数据的逻辑结构和物理结 ...

  5. JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)

    前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...

  6. 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现

    应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有"同属于一个集合"的关系 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个关 ...

  7. Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题

    Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...

  8. PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

    一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...

  9. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

随机推荐

  1. Socket 入门- 客户端回射程序

    结果输出:------------------------------------------------------客户端:xx@xxxxxx:~/Public/C$ ./postBackCli.o ...

  2. http://crunchify.com/simplest-spring-mvc-hello-world-example-tutorial-spring-model-view-controller-tips/ 非常棒的spring入门,maven,以及eclipse

    http://crunchify.com/simplest-spring-mvc-hello-world-example-tutorial-spring-model-view-controller-t ...

  3. Netbeans连接数据库

    /* Netbeans连接数据库 NetBeans项目的“项目属性”中“库”一栏中.Tab页“编译和运行”中已经加上jdbc的驱动文件 */ Connection conn = null;//连接数据 ...

  4. 新浪微博客户端(18)-集成下拉刷新控件UIRefreshControl

    HomeViewController.m - (void)setupPullToRefreshView { UIRefreshControl *refreshControl = [[UIRefresh ...

  5. curl模拟post请求

    1,curl -d "userType=seller&userId=1034285" "www.baidu.com/getInfo.php"  curl ...

  6. linux cp命令参数及用法详解

    cp (复制档案或目录)[root@linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[root@linux ~]# cp [options] ...

  7. 如何在windows中编写R程序包(转载)

    网上有不少R包的编译过程介绍,挑选了一篇比较详细的,做了稍许修改后转载至此,与大家分享 如何在windows中编写R程序包 created by helixcn modified by binaryf ...

  8. 用LR12录制app,用LR11跑场景,无并发数限制,已试验过,可行!

    免费使用LoadRunner对移动互联网后端服务器压力测试 一.LoadRunner简介 LoadRunner,是惠普公司研发的一款预测系统行为和性能的负载测试工具.通过以模拟上千万用户实施并发负载及 ...

  9. 我的grub.cfg配置文件

    路径:/boot/grub/grub.cfg 配置文件如下: # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-m ...

  10. 通过rails console执行sql语句

    $ RAILS_ENV=production bundle exec rails c irb(main):008:0> r = ActiveRecord::Base.connection.exe ...