/*
* @Description: 描述
* @Version: 1.0
* @Autor: Nanke_南柯
* @Date: 2021-10-04 14:32:10
* @LastEditors: Nanke_南柯
* @LastEditTime: 2021-10-08 21:20:41
*/
#include <stdio.h>
#include <stdlib.h>
// Status 是函数类型 其值是函数结果状态代码
typedef int Status; //定义函数要返回什么类型
typedef int ElemType;
typedef struct
{
int max;
int length;
ElemType *elem; //数组当中首原属的地址
} SqList; //顺序表类型
// 初始化
Status init(SqList &L, int MAXSIZE)
{
L.max = MAXSIZE;
L.length = 0;
L.elem = (ElemType *)malloc(sizeof(ElemType) * MAXSIZE); //为顺序表动态分配存储空间
if (!L.elem)
return false; //如果分配失败了
return true;
}
// 插入
Status insert(SqList &L, int i, ElemType e)
{
//判断传入下标是否小于0 或 大于数组长度-1
if (i < 0 || i > L.max - 1)
return false;
if (L.max == L.length)
return false;
for (int j = L.length - 1; j >= i - 1; j--)
{
L.elem[j + 1] = L.elem[j]; //元素后移
}
L.elem[i] = e; //将新元素放入第i个位置
L.length++; //表长+1
return true;
}
// 删除
Status deletes(SqList &L, int i)
{
if (i < 0 || i > L.max)
return false;
for (int j = i; j <= L.length + 1; j++)
{
L.elem[j - 1] = L.elem[j]; //被删除元素之后的元素前移
}
L.length--; //表长-1
return true;
}
// 销毁
void destory(SqList &L)
{
L.max = 0;
L.length = 0;
free(L.elem); //从内存中释放
}
// 清空
void clear(SqList &L)
{
L.max = 0;
L.length = 0;
}
// 获取长度
int getLength(SqList L)
{
return (L.length);
}
// 是否为空
int isEmpty(SqList L)
{
if (L.length == 0)
{
return 1;
}
else
{
return 0;
}
}
//取值
int getElem(SqList L, int i, ElemType &e)
{
if (i < L.length || i > L.length)
return false;
e = L.elem[i - 1];
return true;
}
// 输出
Status sc(SqList L)
{
for (int i = 0; i <= L.length - 1; i++)
{
printf("%d ", L.elem[i]);
}
printf("
");
return true;
}
int main()
{
SqList list;
init(list, 2);
insert(list, 0, 2);
insert(list, 1, 3);
// printf("%d
", getLength(list));
// printf("%d
", isEmpty(list));
// deletes(list,0);
// printf("%d
",list.length);
sc(list);
// clear(list);
// destory(list);
return 0;
}