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

题目描述

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

输入

第一行输入整数n,代表下面有n行输入;
之后输入n行,每行先输入整数m,之后输入m个数据,代表对应顺序表的每个元素。

输出

输出有n行,为每个顺序表删除多余元素后的结果

示例输入

4
5 6 9 6 8 9
3 5 5 5
5 9 8 7 6 5
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define	LISTINCREASMENT 100               
#define  LISTSIZE 10                          
#define  OVERFLOW -1
#define  OK 1
typedef int ElemType;typedef struct                           
{ElemType * elem;int length;int listsize;
} Sqlist;int SqInitial(Sqlist &L)              //顺序表的初始化;
{    L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));//动态变量的空间扩充;if (!L.elem)  exit(OVERFLOW); //判断是否开辟空间成功;L.length=0;L.listsize=LISTSIZE;return OK;
}int ListInsert(Sqlist &L,int i,ElemType e)   //顺序表的元素添加;
{if(i<1|| i > L.length+1) printf("ERROR!");if(L.length>=L.listsize)//判断顺序表是否空间溢出;{ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)*sizeof(ElemType));//扩充空间;if(!newbase)   return  OVERFLOW;		L.elem=newbase;L.listsize+=LISTINCREASMENT;         }ElemType *  q=&(L.elem[i-1]);ElemType *  p;for(p=&(L.elem[L.length-1]); p>=q; --p)*(p+1)=*p;*q=e;++L.length;return OK;}void ListDelete(Sqlist &L,int i,ElemType &e)            
{if(i<1||i>L.length) printf("ERROR!");else{e=L.elem[i-1];for(;i<L.length;i++){L.elem[i-1]=L.elem[i];}L.length--;}}
ElemType GetElem(Sqlist &L,int i)
{if(i<1||i>L.length) printf("ERROR!");else{return L.elem[i-1];}
}
void purge(Sqlist &L)//顺序表内相同元素的删除,位移算法;
{int i,j,k;for(i=0;i<L.length-1;++i){j=i+1;while(j<L.length)if(L.elem[j]!=L.elem[i]) ++j;else{for(k=j+1;k<L.length;++k)L.elem[k-1]=L.elem[k];--L.length;}}
}
int main()
{int i,j,k,m,n;scanf("%d",&n);for(i=0;i<n;i++){Sqlist L;//顺序表的定义;SqInitial(L);//顺序表的初始化;scanf("%d",&m);for(j=1;j<=m;j++){scanf("%d",&k);ListInsert(L,j,k);//顺序表元素的添加;}purge(L);//顺序表相同元素的删除;for(j=1;j<=L.length;j++)//顺序表所有元素的输出;{if(j!=L.length) printf("%d ",L.elem[j-1]);elseprintf("%d\n",L.elem[j-1]);}}
}10 1 2 3 4 5 5 4 2 1 3

示例输出

6 9 8
5
9 8 7 6 5

1 2 3 4 5

#include <iostream> using namespace std; int main() { int n; int t; cin>>t; while(t--) { cin>>n; int a[10010]; int i,j; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n-1;i++) { j=i+1; while(j<n) if(a[j]!=a[i]) j++; else { for(int k=j+1;k<n;k++) a[k-1]=a[k]; n--; } } for(i=0;i<n-1;i++) cout<<a[i]<<" "; cout<<a[n-1]<<endl; } return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《暗时间》-----摘记

http://blog.sina.com.cn/s/blog_6af5df430101ab83.html -------整理 最近花了3天左右的下班时间和上班之前的时间把刘未鹏先生关于学习方法的相关博客看了一遍&#xff0c;觉得讲得很有道理&#xff0c;下面把觉得我感受很深的地方摘录下来了。 特别说明&#xff1a;本文是我对…

Hbase 协处理器 RegionObserver

参考链接1&#xff1a;https://www.cnblogs.com/ios123/p/6370724.html 参考链接2&#xff1a;http://www.zhyea.com/2017/04/13/using-hbase-coprocessor.html RegionObserver 注&#xff1a;每次更新协处理器方法&#xff0c;最好加上版本更新&#xff0c;否则可能会出现更…

搭建zookeeper集群环境详解

第一步:上传zookeeper.jar.gz文件至一台虚拟机&#xff0c;并解压至 /root/apps 目录下&#xff08;如没有该目录则手动创建&#xff09; 第二步&#xff1a;进入在/root/apps/zookeeper目录下 &#xff0c;删除不必要文件 rm -rf .txt .xml docs dist-maven src 第三步: 进入…

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

题目描述 一个长度不超过10000数据的顺序表&#xff0c;可能存在着一些值相同的“多余”数据元素&#xff08;类型为整型&#xff09;&#xff0c;编写一个程序将“多余”的数据元素从顺序表中删除&#xff0c;使该表由一个“非纯表”&#xff08;值相同的元素在表中可能有多个…

OSG框架分析

本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来, 感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构有个…

自动化部署脚本开启所有zookpeer等服务

1.为了方便ssh连接&#xff0c;最好把所有的主机之间实现免密登录 ssh-keygen sh-copy-id 主机名 2.在根目录下新建bin文件夹&#xff0c;并创建部署的脚本start.sh #!/bin/bash for i in 1 2 3 dossh weijie$i "source /etc/profile; /root/apps/zookeeper-3.4.5/bin…

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

题目描述 一个长度为len(1<len<1000000)的顺序表&#xff0c;数据元素的类型为整型&#xff0c;将该表分成两半&#xff0c;前一半有m个元素&#xff0c;后一半有len-m个元素&#xff08;1<m<len)&#xff0c;借助元素移位的方式&#xff0c;设计一个空间复杂度为O…

Hbase 协处理器之将数据保存到es (二级索引)

利用Hbase Coprocessor 实现将插入hbase中的数据保存至ElasticSearch中&#xff0c;实现二级索引目的 版本&#xff1a; Hbase&#xff1a; 2.1 ES&#xff1a;6.3.0 一、Coprocessor代码开发 协处理器类 package wiki.hadoop.coprocessor;import org.apache.hadoop.hbas…

Delta3d框架学习--程序启动过程详解

一个Delta3d程序启动过程详解 一、初始化一个dtGame::GameApplication的实例&#xff0c;dtGame::GameApplication* app new dtGame::GameApplication(); 设置游戏库的名称&#xff0c;SetGameLibraryName("libname")&#xff1b; 调用app->Config("conf…

在Eclipse中如何操作zookpeer

导入jar包 jar包下载链接 代码解析 package com.itcast.zookpeer.zk;import java.io.IOException; import java.util.List;import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apac…

顺序表应用4:元素位置互换之逆置算法

题目描述 一个长度为len(1<len<1000000)的顺序表&#xff0c;数据元素的类型为整型&#xff0c;将该表分成两半&#xff0c;前一半有m个元素&#xff0c;后一半有len-m个元素&#xff08;1<m<len)&#xff0c;设计一个时间复杂度为O(N)、空间复杂度为O(1)的算法&am…

Linux 系统进程守护工具 cesi + superviosr

一、安装 Supervisor pip install supervisor 使用 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 配置文件说明 位置&#xff1a;etc/supervisord.conf内容&#xff1a;# 指定了socket file的位置 [unix_http_server] f…

Delta3d组件以及消息机制

在游戏管理器&#xff08;GameManager&#xff09;中维护一个消息队列std::queue(mSendMessageQueue),在GameManager::SendMessage中将消息放入队列中&#xff0c;如下 void GameManager::SendMessage(const Message& message){mGMImpl->mSendMessageQueue.push(dtCore:…

集合类三种遍历方式

package com.test;import java.util.ArrayList; import java.util.Iterator;//集合三种遍历方式 /** iterator的操作是有限的&#xff0c;只能对元素进行判断、取出、删除操作* 如果进行其他操作用ListIterator* */ public class Array_list {public static void main(String[]…

顺序表应用6:有序顺序表查询

题目描述 顺序表内按照由小到大的次序存放着n个互不相同的整数&#xff08;1<n<20000)&#xff0c;任意输入一个整数&#xff0c;判断该整数在顺序表中是否存在。如果在顺序表中存在该整数&#xff0c;输出其在表中的序号&#xff1b;否则输出“No Found!"。输入 第…

Docker 服务器安装(一)

使用官方安装脚本自动安装 安装命令如下&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令&#xff1a; curl -sSL https://get.daocloud.io/docker | sh 设置docker 加速器 sudo curl -sSL https…

游戏入口点GameEntryPoint

GameStart 通过在我们的库中查找入口点类来调用相应的接口启动我们的应用程序。一旦它找到了入口点&#xff0c;它会调用三个函数来替换掉它自己的应用转向执行我们的游戏循环。游戏入口点对于 GameStart 来说就像ActorPluginRegistry 对于 ActorLibrary 一样。游戏入口点有以下…

Docker 入门使用 (二)

配置国内的源 > /etc/docker/daemon.json{"registry-mirrors" : ["https://mirror.ccs.tencentyun.com","http://registry.docker-cn.com","http://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"],"…

顺序表应用5:有序顺序表归并

题目描述 已知顺序表A与B是两个有序的顺序表&#xff0c;其中存放的数据元素皆为普通整型&#xff0c;将A与B表归并为C表&#xff0c;要求C表包含了A、B表里所有元素&#xff0c;并且C表仍然保持有序。输入 输入分为三行&#xff1a;第一行输入m、n&#xff08;1<m,n<100…

Delta3d角色注册机制

角色注册主要通过继承自类dtDAL::ActorPluginRegistry类来实现&#xff0c;重写其中的RegisterActorTypes()即可&#xff1b;在对象工厂ObjectFactory中保存了“角色类型到负责创建角色对象的全局函数”的Map&#xff1b; 关键函数有&#xff1a; dtCore::RefPtr<BaseActor…