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

【id:18】【25分】B. DS顺序表–连续操作
题目描述

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

该类具有以下成员函数:

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

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

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

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

输入

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

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

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

输出

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

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

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

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

样例查看模式
正常显示
查看格式
输入样例1 <-复制
6 11 22 33 44 55 66
2 3 99 88 77
4 5
输出样例1
6 11 22 33 44 55 66
9 11 99 88 77 22 33 44 55 66
4 11 99 88 66

#include<iostream>
using namespace std;
#define ok 0
#define error -1
class SeqList{
private:
	int *list;
	int maxSize;
	int size;
public:
	SeqList(){
		maxSize=1000;
		size=0;
		list =new int[maxSize];
	}
	~SeqList(){
		delete []list;
	}
	int list_size(){
		return size;
	}
	int list_insert(int i,int item){
		if(i<=0||i>size+1||size==maxSize) 
		{cout<<"error\n";
		return error;}
		for(int j=size;j>=i-1;j--){
			list[j]=list[j-1];
		}
		list[i-1]=item;
		size++;
		//this->list_display();
		return ok;
	}
	int list_del(int i){
		if(i<=0||i>size)
		{cout<<"error\n";
		return error;}
		for(int j=i;j<size;j++){
			list[j-1]=list[j];
		}
		size--;
		//this->list_display();
		return ok;
	}		
	int list_get(int i){
		if(i<=0||i>size)
		{cout<<"error\n";
		return error;}
		cout<<list[i-1]<<"\n";
		return ok;
	}
	int list_push(int item){
		list[size++]=item;
		return ok;
	}
	int multiinsert(int i, int n, int item[]){
		for(int j=0;j<n;j++){
			this->list_insert(i++,item[j]);
		}
		this->list_display();
	}
	int multidel(int i, int n){
		for(int j=0;j<n;j++){
			this->list_del(i);
		}
		this->list_display();
		
	}
	void list_display(){
		cout<<size<<" ";
		for(int i=0;i<size;i++)
		{
		cout<<list[i]<<" ";
		}cout<<endl;
	}
};
int main(){
	int n,item,a,b;
	cin>>n;
	SeqList s;
	for(int i=0;i<n;i++){
		cin>>item;
		s.list_push(item);
	}	
	s.list_display();
	cin>>a>>b;
	int c[b];
	for(int i=0;i<b;i++){
		cin>>c[i];
	}
	s.multiinsert(a,b,c);
	cin>>a>>b;
	s.multidel(a,b);
}
在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行()操作与链表的长度有关。 A. 删除单链表中的第一个元素 B. 删除单链表中的最后一个元素 C. 在单链表第一个元素前插入一个新元素 D. 在单链表最后一个元素后插入一个新元素 分数 2 作者 王东 单位 贵州师范学院 链接存储的存储结构所占存储空间( )。 A. 分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B. 只有一部分,存放结点值 C. 只有一部分,存储表示结点间关系的指针 D. 分两部分,一部分存放结点值,另一部分存放结点所占单元数 分数 2 作者 DS课程组 单位 浙江大学 线性表若采用链式存储结构时,要求内存中可用存储单元的地址 A. 必须是连续的 B. 连续或不连续都可以 C. 部分地址必须是连续的 D. 一定是不连续的 分数 2 作者 DS课程组 单位 浙江大学 线性表L在什么情况下适用于使用链式结构实现? A. 需不断对L进行删除插入 B. 需经常修改L中的结点值 C. L中含有大量的结点 D. L中结点结构复杂 分数 2 作者 王东 单位 贵州师范学院 单链表的存储密度( )。 A. 大于1 B. 等于1 C. 小于1 D. 不能确定 分数 2 作者 黄龙军 单位 绍兴文理学院 创建一个包括n个结点的有序单链表的算法的时间复杂度是( ) A. O(1) B. O(n) C. O(n 2 ) D. O(nlog 2 ​ n) 分数 2 作者 李廷元 单位 中国民用航空飞行学院 在删除表中第i个元素时,同样地,为保持删除后表中原有元素的相对次序不变,需要从前向后依次前移( )个元素。 A. n-i B. n-i+1 C. n-i-1 D. i 分数 2 作者 严冰 单位 浙大城市学院 某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为()。 A. 144 B. 145 C. 147 D. 148 分数 2 作者 DS课程组 单位 浙江大学 在N个结点的顺序表中,算法的时间复杂度为O(1)操作是: A. 访问第i个结点(1≤i≤N)和求第i个结点的直接前驱(2≤i≤N) B. 在第i个结点后插入一个新结点(1≤i≤N) C. 删除第i个结点(1≤i≤N) D. 将N个结点从小到大排序 分数 2 作者 王东 单位 贵州师范学院 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为( ) A. 8 B. 63.5 C. 63 D. 7 分数 2 作者 袁科 单位 湖北汽车工业学院 在一个长度为n的顺序表中,向第i个元素(1≤i≤n+1)位置插入一个新元素时需要从后向前移动多少个元素。 A. n-i B. n-i+1 C. n-i-1 D. i 分数 2 作者 DS课程组 单位 临沂大学 以下说法错误的是( )。 A. 求表长、定位这两种运算在采用顺序存储结构时实现的效率不比采用链式存储结构时实现的效率低 B. 顺序存储的线性表可以随机存取 C. 由于顺序存储要求连续的存储区域,所以在存储管理上不够灵活 D. 线性表的链式存储结构优于顺序存储结构 分数 2 作者 李廷元 单位 中国民用航空飞行学院 若长度为n的非空线性表采用顺序存储结构,在表的第i个位置插入一个数据元素的合法值应该是( )。 A. 1≤i≤n B. 1≤i≤n+1 C. 0≤i≤n-1 D. 0≤i≤n 分数 2 作者 DS课程组 单位 浙江大学 对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度为: A. O(1), O(1) B. O(1), O(N) C. O(N), O(1) D. O(N), O(N) 分数 2 作者 徐婉珍 单位 广东东软学院 (neuDS)线性表的顺序存储结构是一种( ) A. 随机存取的存储结构 B. 顺序存取的存储结构 C. 索引存取的存储结构 D. 散列存取的存储结构 分数 2 作者 李廷元 单位 中国民用航空飞行学院 顺序存储表示中数据元素之间的逻辑关系是由( )表示的。 A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 分数 2 作者 DS课程组 单位 临沂大学 若线性表最常用的操作是存取第i个元素及其前驱的值,则采用( )存储方式节省时间。 A. 单链表 B. 双向链表 C. 单循环链表 D. 顺序表 分数 2 作者 DS课程组 单位 临沂大学 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )存储方式最节省时间。 A. 顺序表 B. 双链表 C. 带头结点的双循环链表 D. 单循环链表 分数 2 作者 李廷元 单位 中国民用航空飞行学院 设线性表有n个元素且采用顺序存储表示,算法的时间复杂度为O(1)操作是( )。 A. 访问第i个元素(1<i<n)和求第i个元素的直接前趋(2<i<n)。 B. 在第i个元素后面插入一个新元素 C. 删除数组第i个元素(1<i<n) D. 顺序查找与给定值x相等的元素
最新发布
10-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谁的BUG最难改

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值