#include <iostream>
#define InitSize 50
#define MaxSzie 50
#define ElementType int
typedef struct {
ElementType *data;
int length, MaxSize;
} SqList;
/**
* 初始化表。构造一个空的线性表。
* @param L
*/
void InitList(SqList &L) {
L.data = new ElementType[InitSize];
L.length = 0;
L.MaxSize = MaxSzie;
}
/**
* 插入操作。在表L 中的第i 个位置上插入指定元素e 。
* @param L
* @param i
* @param e
* @return
*/
bool ListInsert(SqList &L, int i, ElementType e) {
if (i < 1 || i > L.length + 1) {
return false;
}
if (L.length > L.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;
}
/**
* 删除操作
* @param L
* @param i
* @return
*/
bool ListDelete(SqList &L, int i) {
if ((i < 1) || (i > L.length)) {
return false;
}
for (int j = i; j <= L.length; j++) {
L.data[j - 1] = L.data[j];
}
L.length--;
return true;
}
/**
* 按位查找操作。获取表L 中第i 个位置的元素的值。
* @param L
* @param index
* @return
*/
int GetElem(SqList L, int index) {
for (int i = 0; i < L.length; i++) {
if (index == i) {
return L.data[i];
}
}
}
/**
* 求表长。返回线性表L 的长度,即L 中数据元素的个数。
* @param L
* @return
*/
int Length(SqList L) {
return L.length;
}
/**
* 按值查找操作。在表L 中查找具有给定关键宇值的元素。
* @param L
* @param e
* @return
*/
int LocateElem(SqList L, ElementType e) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == e) {
return i;
}
}
}
/**
* 判空操作
* @param L
* @return
*/
bool Empty(SqList L) {
if (L.length == 0) {
return true;
}
return false;
}
/**
* 销毁操作。销毁线性表,井释放线性表L 所占用的内存空间。
* @param L
*/
void DestroyList(SqList &L) {
L.data = NULL;
L.length = 0;
}
/**
* 打印顺序表数据
* @param L
*/
void print(SqList L) {
if (L.length > 0) {
for (int i = 0; i < L.length; i++) {
std::cout << L.data[i] << std::endl;
}
}
}
int main() {
SqList sqList;
InitList(sqList);//初始化顺序表
for (int i = 0; i < 10; i++) {//插入数据
ListInsert(sqList, i, i);
}
ListInsert(sqList, 8, 688);
print(sqList);//打印顺序表
int value = GetElem(sqList, 6);
std::cout << value << std::endl;
return 0;
}