C++数据结构题:DS 顺序表--连续操作

2023-09-21 22:35:37
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为 1000
该类具有以下成员函数:
构造函数:实现顺序表的初始化。
插入多个数据的 multiinsert(int i, int n, int item[]) 函数,实现在第 i 个位置,
连续插入来自数组 item n 个数据,即从位置 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 Input

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

 Sample Output

6 11 22 33 44 55 66

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

 AC代码:

#include<iostream>
#include <cstring>
using namespace std;
#define ok 0
#define error -1
// 顺序表类定义
class SeqList
{
private:
	int* list; // 元素数组
	int maxsize; // 顺序表最大长度
	int size; // 顺序表实际长度
public:
	SeqList(); // 构造函数
	~SeqList(); // 析构函数
	void set(int length) {
		this->size = length;
		for (int i = 0; i < length; i++) {
			cin >> *(list + i);
		}//初始化数组
			
		list_display();
	}
	void multiinsert(int i, int n, int item[]) {
		for (int j = size - 1; j >= i - 1; j--) {
			*(list + n + j) = *(list + j);
		}
		for (int j = i - 1, k = 0; j < i + n - 1; j++, k++) {
			*(list + j) = item[k];
		}
		size += n;
		cout << size << " ";
		list_display();
	}
	void multidel(int i, int n) {
		for (int j = i + n - 1; j < size + n; j++) {
			*(list + j - n ) = *(list + j);
		}
		size -= n;
		cout << size << " ";
		list_display();
	}
	void list_display() {
		for (int i = 0; i < size; i++) {
			cout << *(list + i)<<" ";
		}
		cout << endl;
	}; // 输出整个顺序表
};
SeqList::SeqList()
{
	maxsize = 1000;
	size = 0;
	list = new int[maxsize];
}
SeqList::~SeqList()
{
	delete[]list;
}

int main() {
	int n;
	cin >> n;
	SeqList p;
	p.set(n);
	int i;
	int k;
	cin >> i >> k;
	int a[1000];
	for (int j = 0; j < k; j++) {
		cin >> a[j];
	}
	p.multiinsert(i, k,a);
	cin >> i >> k;
	p.multidel(i, k);
	return 0;
}

添加数据有三种方法:

for (int j = size - 1; j >= i - 1; j--) {
	*(list + n + j) = *(list + j);
}
for (int j = i - 1, k = 0; j < i + n - 1; j++, k++) {
	*(list + j) = item[k];
}

int a[1000];
for (int j = 0; j < size; j++) {
	a[j] = *(list + j);
}
for (int j = i - 1; j < i - 1 + n ; j++) {
	*(list + j) = item[j - i + 1];
}
for (int j = i + n - 1; j < size + n; j++) {
	*(list + j) = *(a + j - n );
}

 

for(int k=n-1;k>=0;k--){
				for(int j = size; j >i-1 ;j--){
				list[j]=list[j-1];	
				}
				list[i-1]=item[k];
				size++;
			}
更多推荐

动态代理原理和设计模式详解

一、什么是代理模式代理模式是一种设计模式,提供了对目标对象额外的访问方式,即可以通过代理访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的方式进行访问,扩展目标对象的功能。通俗的说,例如你想租房,房子就是你的目标访问对象,那在中间的信息差巨大的情况下,你想要精准找到合适的房子,那么你可以找到中介,中介就是你的

Selenium基础知识

关于selenium你应该知道的selenium是什么?一个自动化测试的工具(系统测试)测试阶段:单元测试、集成测试、系统测试、验收测试自动化测试属于:系统测试自动测试工具:自动化功能测试工具和自动化性能测试selenium包括什么组件?seleniumide,selenium2(seleniumRC(服务)+webD

单例模式,适用于对象唯一的情景(设计模式与开发实践 P4)

文章目录单例模式实现代理单例惰性单例上一章后续的内容是关于JS函数闭包的,考虑很多读者已经有了闭包基础或者希望通过实战理解,遂跳过上一章直接开始设计模式篇~需要注意的是,代码部分仅供参考,主要关注的内容是设计模式的思想和运用,结合到自己的实战中才是最好的单例模式单例模式的定义是:保证一个类只有一个实例,并提供一个访问他

什么是特权帐户和会话管理

特权帐户和会话管理(PASM)是特权访问管理的一部分,它为用户提供通过远程会话对关键帐户和业务敏感型端点(如数据中心、数据库和应用程序)的管理访问权限。事实上,Gartner已将PASM列为PAM的关键支柱之一,与权限提升和委派管理以及安全远程访问并列。过度的特权伴随着过度的风险,员工拥有的管理权限越多,攻击面就越大。

中小企业建设数字化工厂,选择集成还是重构

随着科技的飞速发展和市场竞争的日益激烈,数字化工厂管理系统已成为中小企业未来发展的必经之路。然而,对于许多中小企业来说,建设数字化工厂并非易事。在建设数字化工厂的过程中,企业需要面对许多问题,其中最关键的问题是:选择集成还是重构?首先,我们需要理解数字化工厂的内涵。数字化工厂是在数字化技术的基础上,将生产全过程数字化,

在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境

目录在Windos10专业版搭建Fyne(Go跨平台GUI)开发环境一Fyne和MSYS2简介1.1Fyne1.2MSYS2二安装MSYS22.1下载MSYS22.2安装2.3环境变量设置2.4检测安装环境三参考文档在Windos10专业版搭建Fyne(Go跨平台GUI)开发环境一Fyne和MSYS2简介1.1Fyne

解密list的底层奥秘

🎈个人主页:🎈:✨✨✨初阶牛✨✨✨🐻强烈推荐优质专栏:🍔🍟🌯C++的世界(持续更新中)🐻推荐专栏1:🍔🍟🌯C语言初阶🐻推荐专栏2:🍔🍟🌯C语言进阶🔑个人信条:🌵知行合一金句分享:✨即使人生还有无数次失望的可能性,✨✨但我还是想活在理想主义的乌托邦里.✨目录一、list底层框架(1)节点类

使用Python进行供应链分析

供应链是生产和向客户交付货物所涉及的生产和物流网络。供应链分析是指分析供应链的各个组成部分,以了解如何提高供应链的有效性,为客户创造更多价值。所以,如果你想学习如何分析供应链,这篇文章是给你的。文章中,将带你完成使用Python进行供应链分析的任务。使用Python进行供应链分析导入必要的Python库和数据集开始供应

数据算法--7.2.2排序算法

一、希尔排序基本有序#include<stdio.h>voidInsertSort(intk[],intn){inti,j,temp;intgap=n;do{gap=gap/3+1;for(i=gap;i<n;i++){if(k[i]<k[i-gap]){temp=k[i];for(j=i-gap;k[j]>temp;

Mac/m1终端配置自动登录ssh服务器等后续操作

当我们每次连接ssh服务器的时候,都要输入账号密码等重复性的操作,这些动作让我们烦不胜烦。那怎么办呢?有没有什么玩意能让我们只输入一条命令,并且根据传参来自动的执行这些固定的操作呢?针对这个问题,我们就可以用expect神器来写一个自动化的交互脚本来解放我们的双手了。下面是实现流程:先定一个我们未来写脚本的文件夹mkd

一个线程运行时发生异常会怎样?

如果一个线程在运行时发生异常而没有被捕获(即未被适当的异常处理代码处理),则会导致以下几种情况之一:线程终止:线程会立即终止其执行,并将异常信息打印到标准错误输出(System.err)。这通常包括异常的类型、堆栈跟踪信息以及异常消息。ThreadDeath异常:在某些情况下,特定类型的未捕获异常ThreadDeath

热文推荐