B : DS顺序表--连续操作

Description

建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)

该类具有以下成员函数:

构造函数:实现顺序表的初始化。

插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组itemn个数据,即从位置i开始插入多个数据。

删除多个数据的multidel(int i, int n)函数,实现从第i个位置开始,连续删除n个数据,即从位置i开始删除多个数据。

编写main函数测试该顺序表类。

Input

第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据

第2行先输入i表示插入开始的位置,再输入k表示有k个插入数据,接着输入k个数据

第3行先输入i表示删除开始的位置,再输入k表示要删除k个数据

Output

顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开

第1行输出创建后的顺序表内容

第2行输出执行连续插入后的顺序表内容

第3行输出执行连续删除后的顺序表内容

Sample

#0
Input

Copy

6 11 22 33 44 55 66
2 3 99 88 77
4 5
Output

Copy

6 11 22 33 44 55 66 
9 11 99 88 77 22 33 44 55 66 
4 11 99 88 66 

 自己做的没有用multiinsert(int i, int n, int item[])

#include<iostream>
using namespace std;
#define ok 0
#define error -1// 顺序表类定义
class SeqList
{
private:int* list;      // 元素数组int maxsize;    // 顺序表最大长度int size;       // 顺序表实际长度
public:SeqList();                          // 构造函数~SeqList();                         // 析构函数int list_size();                    // 获取顺序表实际长度bool list_insert(int i, int item);   // 插入一个元素,参数是插入的位置  数值bool list_del(int i);                // 删除一个元素,参数是删除的位置bool list_get(int i);                // 获取一个元素,参数是获取的位置void list_display();                // 输出整个顺序表};SeqList::SeqList()// 构造函数
{maxsize = 1000;size = 0;list = new int[maxsize];
}SeqList::~SeqList() // 析构函数
{delete[]list;
}// // 获取顺序表实际长度
int SeqList:: list_size() {return size;
}// 插入一个元素,参数是插入的位置 数值
bool SeqList:: list_insert(int i, int item) {//判断是不是合法位置iif (i<1 || i>size + 1){return false;}int j = size;//list数组从0开始 所以list[size]这个位置是为空的for (j = size; j > i - 1; j--){list[j] = list[j - 1];//插入就是把数组长度加一位 并且每个单位往后移一位}list[j] = item;//此时的j对于i-1 也就是在i的位置输入item数据size++;//数组总长要+1return true;
}// 删除一个元素,参数是删除的位置
bool  SeqList:: list_del(int i) {//判断是不是合法位置iif (i<1 || i>size + 1){return false;}int j;for (j = i - 1; j < size - 1; j++){  //j = i - 1 此时j的位置就是ilist[j] = list[j + 1]; //删除就是后面的数据 把 前面一项的数据覆盖}size--;//删除 数组长度-1return true;
}// 获取一个元素,参数是获取的位置
bool SeqList::list_get(int i)
{if(i<1 || i>size)	return false;cout<<list[i-1]<<endl;return true;
}//输出列表
void SeqList:: list_display() {cout << size << " ";for (int i = 0; i < size; i++)cout << list[i] << " ";cout << endl;
}int main()
{//第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据int n;cin >> n;//创建顺序表SeqList myList;//接着输入n个数据for (int i = 1; i <= n; i++){int num1;cin >> num1;myList.list_insert(i, num1); 插入一个元素,参数是插入的位置+数值}// 输出整个顺序表myList.list_display();//第2行先输入i表示插入开始的位置,再输入k表示有k个插入数据,接着输入k个数据int k;cin >> n>>k;for (int i = n; i < n+k ; i++)//循环k次{int num;cin >> num;myList.list_insert(i, num);}// 输出整个顺序表myList.list_display();// 第3行先输入i表示删除开始的位置,再输入k表示要删除k个数据cin >> n >> k;for (int i = n;i<n+k;i++)//循环k次{myList.list_del(n);//永远都是删除这个下标的数据}// 输出整个顺序表myList.list_display();
}

用了multiinsert(int i, int n, int item[])

#include<iostream>
#include<math.h>
#include<string>using namespace std;#define ok 0
#define error -1class SeqList
{int* list; //元素数组int maxsize;int size;
public:SeqList(){maxsize = 1000;size = 0;list = new int[maxsize];}~SeqList(){if (list != NULL)delete[]list;}int list_size();  //获取顺序表的实际长度int list_insert(int i, int item); //插入一个元素int list_del(int i);int list_get(int i);void list_display();//插入多个数据的multiinsert(int i, int n, int item[])函数,//实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据。void multiinsert(int i, int n, int item[]){for (int p = 0; p < n; p++){list_insert(i + p, item[p]);//插入是不断往后插 所以p要变化}}//删除void multidel(int i, int n){for (int p = 0; p < n; p++){list_del(i + 1);//删除每次都是i+1那个位置被删 所以选择定值i}}
};
int SeqList::list_size()
{return size;
}
int SeqList::list_insert(int i, int item)
{if (i<1 || i>size + 1){return -1;}for (int q = size; q > i - 1; q--){if (q > 0)list[q] = list[q - 1];}list[i - 1] = item;size++;return ok;
}
int SeqList::list_del(int i)
{if (i<1 || i>size + 1){return -1;}//if (i != size)//{for (int q = i - 1; q < size; q++){if (q > 0)list[q - 1] = list[q];}//}size--;return ok;
}
int SeqList::list_get(int i)
{if (i<1 || i>size + 1){return -1;}return list[i - 1];
}
void SeqList::list_display()
{cout << size << " ";for (int i = 0; i < size; ++i){cout << list[i] << " ";}cout << endl;
}int main(void)
{int n;cin >> n;SeqList p;int number[128];for (int i = 0; i < n; ++i){cin >> number[i];}p.multiinsert(1, n, number);p.list_display();int i;cin >> i >> n;for (int i = 0; i < n; ++i){cin >> number[i];}p.multiinsert(i, n, number);p.list_display();cin >> i >> n;p.multidel(i, n);p.list_display();return 0;
}

小结:二者的核心思路都是一样的 只是有没有封装成函数

插入时候 下标要不断往后移

删除 下标不变

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

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

相关文章

Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

Unity 开发人员的城堡游戏引擎概述 一、简介2. Unity相当于什么GameObject&#xff1f;3. 如何设计一个由多种资产、生物等组成的关卡&#xff1f;4. 在哪里放置特定角色的代码&#xff08;例如生物、物品&#xff09;&#xff1f;Unity 中“向 GameObject 添加 MonoBehaviour”…

Vue3大屏项目实现数字跳动的效果

一、vue-count-to组件&#xff1a; 1、安装&#xff1a; npm install vue3-count-to --save 2、使用&#xff1a; <template><BaseCountTo:startVal"startVal":endVal"endVal":duration"duration":decimals"decimals":pr…

基于复旦微的FMQL45T900全国产化ARM核心模块(100%国产化)

TES745D是一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板。该核心板将复旦微的FMQL45T900&#xff08;与XILINX的XC7Z045-2FFG900I兼容&#xff09;的最小系统集成在了一个87*117mm的核心板上&#xff0c;可以作为一个核心模块&#xff0c;进行功能性扩展&#xff0c;能…

Redis 五大类型源码及底层实现

面试题&#xff1a; 谈谈Redis数据类型的底层数据结构&#xff1a; SDS动态字符串双向链表玉缩列表ziplist哈希表hashtable跳表kiplist整数集合intset快速列表quicklist紧凑列表listpack Redis源代码的核心部分 官网&#xff1a;GitHub - redis/redis: Redis is an in-memory…

在已知的二维坐标里找到最接近的点

一、业务场景 最近在研发的项目&#xff0c;在做可视化层&#xff0c;在全球地图上&#xff0c;对我们的国家的陆地地图经纬度按照步长为1的间隔做了二维处理。在得到一组整数的点位信息后&#xff0c;需要将我们已有的数据库数据(业务项目)按照地址的经纬度&#xff0c;映射到…

大数据Flink(八十三):SQL语法的DML:With、SELECT WHERE、SELECT DISTINCT 子句

文章目录 SQL语法的DML:With、SELECT & WHERE、SELECT DISTINCT 子句 一、DML:With 子句

本地Docker Registry远程连接,为你带来高效便捷的镜像管理体验!

Linux 本地 Docker Registry本地镜像仓库远程连接 文章目录 Linux 本地 Docker Registry本地镜像仓库远程连接1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址…

jmeterbeanshell调用jsonpath获取对应值

1.jmeter 新建线程组、Java Request、BeanShell Assertion、View Results Tree 2、在BeanShell Assertion中贴入代码&#xff1a; import org.apache.jmeter.extractor.json.jsonpath.JSONManager; import java.util.List; JSONManager js new JSONManager(); String jsonStr…

电商项目高级篇-01 elasticsearch

电商项目高级篇-01 elasticsearch 1、linux下安装elasticsearch和可视化工具2、docker设置虚拟机开机启动和容器开机启动3、elasticsearch的curd3.1、新增、更新3.2、查询 1、linux下安装elasticsearch和可视化工具 将安装好jdk1.8和tomcat的centos7下安装elasticsearch dock…

贝叶斯神经网络 BBB 学习中遇到的一些问题

这里写目录标题 贝叶斯公式模型概率的公式1/n 形式的贝叶斯公式 全概率公式全概率公式的积分形式 后验推理后验预测分布 posterior predictive distributionKL 散度 平均场 VIBayes by Backprop 代码重新参数化 贝叶斯公式 模型概率的公式 一开始看了这个 https://zhuanlan.z…

Unity 2021.x及以下全版本Crack

前言 最近Unity那档子事不出来了吗&#xff0c;搞得所有人都挺烦的&#xff0c;顺便在公司内网需要我完成一个游戏的项目&#xff0c;就研究了一下如何将Unity给Crack掉。 注意所有操作应有连接外网的权限 以我选择的版本为例&#xff0c;我使用的是Unity 2021.3.5f1与Unity…

企业商标信息API:品牌管理的秘密武器

引言 当今数字时代&#xff0c;品牌管理变得比以往任何时候都更具挑战性。企业需要不断创新、保护知识产权、实时监测市场动态以及应对竞争压力。在这个竞争激烈的环境中&#xff0c;企业商标信息API已经成为品牌管理的秘密武器&#xff0c;为企业提供了无可估量的价值。 企业…

CFCA企业版通配符SSL证书

CFCA是中国CFCA企业版通配符SSL证书金融认证中心的缩写&#xff0c;即China Financial Certification Authority。它是一家经过中国人民银行和国家信息安全机构批准成立的国家级权威安全认证机构&#xff0c;也是国际CA浏览器联盟组织&#xff08;CA/Browser Forum&#xff09;…

基础算法--位运算

位运算理解&#xff1a; n >> k&#xff1a;代表n右移k位 比如 000011 >> 1 000001 前面会补零&#xff08;所以第几位是从0开始计算&#xff09; n & 1&#xff1a;表示最后一位是否为1 比如&#xff1a;n 3 0011 而 1 0001 则3 & 1 0011 & 000…

红日靶场五(vulnstack5)渗透分析

环境搭建 win7 192.168.111.132&#xff08;仅主机&#xff09; 192.168.123.212&#xff08;桥接&#xff09; .\heart p-0p-0p-0win2008 ip: 192.168.111.131&#xff08;仅主机&#xff09; sun\admin 2020.comkali ip: 192.168.10.131&#xff08;nat&#xff09;vps&…

【vue】vue+easyPlayer 实现宫格布局及视频播放

由于业务需要&#xff0c;ant-design-vue框架集成easyPlayer.js作为视频播放器。EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC等多种音视频编码格…

解密list的底层奥秘

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

CDN加速器有哪些?

一、前端使用CDN加速的优缺点 1.CDN优点 (1). 提高网站性能&#xff1a; CDN&#xff08;内容分发网络&#xff09;可以将静态资源&#xff08;如脚本、样式表、图片等&#xff09;缓存在服务器节点上&#xff0c;并通过就近访问用户&#xff0c;从而提供更快的加载速度和更好…

服务器搭建(TCP套接字)-基础版(客户端)

一、socket 1.1、vim man查看socket :!man socket1.2、 依赖的头文件 #include <sys/types.h> #include <sys/socket.h>1.3、原型 int socket(int domain, int type, int protocol);domain说明AF_INETIPV4协议AF_INET6IPV6协议AF_LOCALUnix域协议 type说明S…

GDPU 数据结构 天码行空2

实验内容 用顺序表实现病历信息的管理与查询功能。具体要求如下: 利用教材中定义顺序表类型存储病人病历信息(病历号,姓名&#xff0c;症状)&#xff1b;要求使用头文件。 设计顺序表定位查找算法&#xff0c;写成一个函数&#xff0c;完成的功能为:在线性表L中查找数据元素x…