顺序表的操作——删除

#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>

#include <cstdlib>
#define MaxSize 10
using namespace std;
//顺序表的删除
typedef struct {
int data[MaxSize];
int length;
} SqList;

void InitList(SqList &L) {
for (int i = 0; i < MaxSize; i++)

L.data[i] = 0; //将所有数据元素设置为默认初始值
L.length = 0; //初始值的长度为0
}

bool ListInsert(SqList &L, int i, int e) {
if (i < 1 || i > L.length + 1) {
return false; //判断i的范围是否有效
}
if (L.length > MaxSize) {
return false; //当前存储空间已满,不能插入
}
for (int j = L.length; j >= i; j--) //将第i个元素后移
L.data[j] = L.data[j - 1]; //
L.data[i - 1] = e; //将第i个元素放入e
L.length++; // length长度加1

return true;
}

int ListDelete(SqList &L, int i, int &e) {
if (i < 1 || i > L.length) return false;//判断i的范围是否有效

e = L.data[i - 1];
for (int j = i; j <= L.length; j++) {
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
int main() {
SqList L; //声明一个顺序表
InitList(L); //初始化顺序表
//....此处省略一些代码,插入几个元素
ListInsert(L, 1, 0);
ListInsert(L, 2, 1);
ListInsert(L, 3, 2);
ListInsert(L, 4, 3);
ListInsert(L, 5, 4);


int e = -1,i = 6;
if (ListDelete(L, i, e)) {
printf("已删除第%d个元素,元素为 %d\n",i, e);
} else
printf("位序不合理,现在表总长%d,删除失败\n",L.length);

return 0;
}

顺序表的操作——删除

上一篇:CF1207G Indie Album(AC自动机+线段树维护DFS序)


下一篇:Markdown的简单实用技巧