第二章 线性表
- 线性表(数组)*
- [ 2022,5.11]
学习内容:
- 初始化
- 增
- 删
- 改
- 查
- 算法复杂度分析
结构体
typedef struct
{
int maxsize;
int length;
ElemType* data;
}SqList;
初始化
void InitList(SqList& L)
{
L.data = (ElemType*)malloc(sizeof(ElemType) * Initsize);
L.maxsize = Initsize;
for (int i = 0; i < L.maxsize; i++)
{
L.data[i] = 0;
}
L.length = 0;
}
动态增加表长
void CreaseSize(SqList& L, int len)
{
int* p = L.data;
L.data = (ElemType*)malloc(sizeof(ElemType) * (len + L.maxsize));
for (int i = 0; i < L.maxsize; i++)
{
L.data[i] = p[i];
}
for (int i = L.maxsize; i < L.maxsize + len; i++)
{
L.data[i] = 0;
}
L.maxsize = L.maxsize + len;
free(p);
}
数据插入
bool InsertList(SqList& L, int n, int m) //n 为插入位置,m为插入元素个数
{
if (n<0 && n>L.length && L.length + m > L.maxsize) {
printf("insert is false!\n");
return false;
}
for (int i = n; i < L.length + m; i++) {
L.data[i + m] = L.data[i];
}
for (int i = n; i < L.length + n; i++)
{
scanf("%d", &L.data[i]);
}
L.length = L.length + m;
printf("insert is true!\n");
return true;
}
数据删除
bool DeleteList(SqList& L, int n)
{
if (n < 0 && n >= L.length) {
printf("Delete is false!\n");
return false;
}
for (int i = n; i < L.length; i++) {
L.data[i] = L.data[i + 1];
}
L.data[L.length] = 0;
L.length--;
printf("Delete is true!\n");
return true;
}
数据更改
bool AlterList(SqList& L, int n)//
{
if (n<0 && n>L.length)
{
printf("Alter is false!\n");
return false;
}
scanf("%d", &L.data[n]);
printf("Alter is ture!\n");
return true;
}
数据查询
ElemType CheckList(SqList L, int n)
{
if (n<0 && n>L.length) {
printf("Check is false!\n");
return false;
}
printf("Check is true!\n");
return L.data[n];
}
算法复杂度
- 增 :O(n)
- 删 :O(n)
- 改 :O(1)
- 查 :O(1)