Input
Output
Sample Input
6 11 22 33 44 55 662 3 99 88 774 5
Sample Output
6 11 22 33 44 55 66
9 11 99 88 77 22 33 44 55 664 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++;
}