DS顺序表--连续操作
Posted szu-ds-wys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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行输出执行连续删除后的顺序表内容
样例输入
6 11 22 33 44 55 66 2 3 99 88 77 4 5
样例输出
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(int n,int *p) { maxsize=1000; list=new int[maxsize]; size=n; for(int i=0;i<n;i++) list[i]=p[i]; } ~SeqList() { delete []list; } int list_size() { return size; } int list_insert(int i,int item) { if(i<1||i>size+1) { cout<<"error"<<endl; return error; } int t=i-1; for(int j=size-1;j>=t;j--) { list[j+1]=list[j]; } list[t]=item; size++; return ok; } int list_del(int i) { if(i<1||i>size) { cout<<"error"<<endl; return error; } int t=i-1; for(int j=t;j<size-1;j++) { list[j]=list[j+1]; } size--; return ok; } int list_get(int i) { if(i<1||i>size) { cout<<"error"<<endl; return error; } int t=i-1; return list[t]; } void list_display() { cout<<size<<" "; for(int i=0;i<size;i++) cout<<list[i]<<" "; cout<<endl; } int multiinsert(int i,int n,int item[]) { if(i<1||i>size+1) return error; for(int count=0;count<n;count++) { list_insert(i,item[n-1-count]); } return ok; } int multidel(int i,int n) { if(i<1||i>size||i+n-1>size) return error; for(int count=0;count<n;count++) { list_del(i); } return ok; } }; int main() { int n; cin>>n; int *p=new int[n]; for(int i=0;i<n;i++) { cin>>p[i]; } SeqList L(n,p); L.list_display(); int index; cin>>index>>n; int *q=new int[n]; for(int i=0;i<n;i++) { cin>>q[i]; } if(L.multiinsert(index,n,q)!=error) L.list_display(); cin>>index>>n; if(L.multidel(index,n)!=error) L.list_display(); delete []p; delete []q; return 0; }
以上是关于DS顺序表--连续操作的主要内容,如果未能解决你的问题,请参考以下文章