6 11 22 33 44 55 66
9 11 99 88 77 22 33 44 55 664 11 99 88 66
- #include
- #include
- 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++;
- }