#include <iostream>
using namespace std;
#define MAXSIZE 50
// 定义结构体
typedef struct {
int *data;
int length;
}SqList;
// 初始化顺序表
void InitList(SqList &L){
L.data =(int *)malloc(sizeof(int) * MAXSIZE);
L.length = 0;
}
// 插入操作
bool ListInsert(SqList &L, int i, int e){
// 判断插入位置合法性
if (i < 1 || i > L.length + 1)
return false;
if (L.length >= MAXSIZE)
return false;
// 将待插入位置之后的所有元素依次后移一位
for (int j = L.length; j >= i; j--){
L.data[j] = L.data[j-1];
}
// 插入
L.data[i-1] = e;
L.length ++;
return true;
}
// 删除操作
bool ListDelete(SqList &L, int i, int &e){
// 判断位置合法性
if (i < 1 || i > L.length)
return false;
// 将要被删除的元素的值保存起来,用以返回
e = L.data[i-1];
// 将被删除位置之后的所有元素依次前移
for (int j = i; j < L.length; j++){
L.data[j-1] = L.data[j];
}
L.length --;
return true;
}
// 输出
void ListPrint(SqList L){
for (int i = 0; i < L.length; i++) {
cout << L.data[i] << endl;
}
}
// 按位查找
int PositionElem(SqList L, int e){
return L.data[e-1];
}
// 按值查找
int LocateElem(SqList L, int e){
for (int i = 0; i < L.length; i++){
if (L.data[i] == e){
return i+1;
}
}
return -1;
}
int main() {
SqList L;
InitList(L);
ListInsert(L, 1, 1);
ListInsert(L, 1, 2);
ListInsert(L, 3, 3);
ListInsert(L, 4, 4);
ListInsert(L, 5, 5);
int e;
ListDelete(L, 1, e);
ListPrint(L);
cout << e << endl;
return 0;
}
C++实现顺序表
最新推荐文章于 2024-04-27 18:58:47 发布