//顺序表基本操作
#include<iostream>
using namespace std;
const int InitSize = 10;
struct List {
int* data;
int length;
int MaxSize;
}SeqList;
//初始化
bool InitList(List& L) {
L.data = (int*)malloc(sizeof(InitSize));
L.length = 0;
L.MaxSize = 15;
if (L.data == NULL) return false;
return true;
}
//求长度
int Length(List &L) {
return L.length;
}
//按值查找
int LocateElem(List& L, int e) {
for (int i = 0; i < L.length; i++)
if (L.data[i] == e) return i+1;
}
//按位查找
int GetElem(List& L, int i) {
return L.data[i - 1];
}
//扩容
bool IncreaseList(List &L,int len) {
int* p = L.data;
L.data = (int*)malloc(sizeof(int) * (len + L.MaxSize));
if (L.data == NULL) return false;
for (int i = 0; i < L.length; i++) L.data[i] = p[i];
L.MaxSize += len;
return true;
}
//插入元素(可自动扩容)
bool ListInsert(List& L, int i, int e) {
if (i < 1||i>L.length+1) return false;
if (L.length == L.MaxSize) IncreaseList(SeqList, 1);
for (int j = L.length - 1; j >= i - 1; j--) L.data[j + 1] = L.data[j];
L.data[i - 1] = e;
L.length++;
}
//删除元素
bool DeldeteList(List& L, int i, int& e) {
if (i < 1) 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 PrintList(List& L) {
for (int i = 0; i < L.length; i++) cout << L.data[i] << ' ';
cout << endl;
}
//判断是否空表
bool Empty(List& L) {
if (L.length == 0) return true;
return false;
}
//销毁
void DestroyList(List& L) {
free(L.data);
L.data = NULL;
L.length = 0;
L.MaxSize = 0;
}