基础数据结构-线性表-顺序表的连续操作
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为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(); ~SeqList(); int list_size(); int list_insert(int i,int item); int list_del(int i); int list_get(int i); void list_display(); int multiinsert(int i, int n, int item[]); int multidel(int i, int n); }; SeqList::SeqList(){ maxsize = 1000; size = 0; list = new int[maxsize]; } SeqList::~SeqList(){ delete []list; } int SeqList::list_size(){ return size; } void SeqList::list_display(){ int i; cout << size << ' '; for(i=0;i<size-1;i++) cout << list[i] << ' '; cout << list[size-1] << ' ' << endl; } int SeqList::list_insert(int i,int item){ if(i<1||i>size+1) return error; else{ int n; for(n=size;n>=i;n--) list[n] = list[n-1]; list[i-1] = item; size++; return ok; } } int SeqList::list_get(int i){ if (i<1||i>size) return error; else{ cout << list[i-1] << endl; return ok; } } int SeqList::list_del(int i){ if (i<1||i>size) return error; else{ int n; for(n=i-1;n<size-1;n++) list[n] = list[n+1]; list[size-1] = 0; size--; return ok; } } int SeqList::multiinsert(int i, int n, int item[]){ int k,itemNB; for(k=0;k<n;k++){ itemNB = item[k]; list_insert(i+k,itemNB); } return ok; } int SeqList::multidel(int i, int n){ int j; for(j=0;j<n;j++){ list_del(i); } return ok; } int main(){ int i,j,n,size,item[1000],itemNB; //定义一个和类限制等大的数组用于后续放置,j为角标 SeqList LIST; cin >> size; for(i=1;i<=size;i++){ cin >> itemNB; LIST.list_insert(i,itemNB); } LIST.list_display(); cin >> j >> n; for(i=0;i<n;i++){ cin >> itemNB; item[i] = itemNB; } LIST.multiinsert(j,n,item); LIST.list_display(); cin >> j >> n; LIST.multidel(j,n); LIST.list_display(); return 0; }
因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言。