#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct SqList {
ElemType* data;
int length;
}SqList;
/*
顺序表的初始化
*/
void InitSqList(SqList& L) {
L.data = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE);
if (!L.data)exit(-1);
L.length = 0;
}
/*
销毁顺序表
*/
void DestroySqList(SqList& L) {
if (L.data)
{
free(L.data);
}
}
/*
清空顺序表
*/
void ClearSqList(SqList& L) {
L.length = 0;
}
/*
求顺序表的长度
*/
int GetLength(SqList L) {
return L.length;
}
/*
判断顺序表是否为空
*/
bool IsEmpty(SqList L) {
if (L.length == 0)
{
return true;
}
else {
return false;
}
}
/*
顺序表的取值(根据位置i获取相应位置元素的内容)
*/
int GetElem(SqList L, int i, ElemType& e) {
if (i < 1 || i > L.length) return -1;
e = L.data[i - 1];
return 1;
}
/*
顺序表的查找与指定值e相同的数据元素位置
*/
int LocateElem(SqList L, ElemType& e) {
for (int i = 0; i < L.length; i++)
{
if (L.data[i] == e) {
return i + 1;
}
}
return 0;
}
/*
顺序表的插入
*/
int ListInsert_Sq(SqList& L, int i, ElemType e) {
if (L.length == MAXSIZE) return -1;
if (i < 1 || i > L.length + 1)return -1;// 1 2 3 4 5|| 可以在6号位置插入
for (int j = L.length - 1; j >= i - 1; j--)
{
L.data[j + 1] = L.data[j];
}
L.data[i - 1] = e;
L.length++;
return 1;
}
/*
顺序表的删除
*/
int ListDelete_Sq(SqList& L, int i, ElemType& e) {
if (i < 1 || i > L.length) return -1;
for (int j = i; j < L.length; j++)
{
L.data[j - 1] = L.data[j];
}
L.length--;
return 1;
}
/*
输出测试
*/
void Test(SqList L) {
for (int i = 0; i < L.length; i++)
{
printf("%d
", L.data[i]);
}
}
int main() {
SqList L;
InitSqList(L);
ListInsert_Sq(L, 1, 1);
ListInsert_Sq(L, 2, 2);
ListInsert_Sq(L, 3, 3);
ListInsert_Sq(L, 4, 4);
ListInsert_Sq(L, 5, 5);
ElemType e;
ListDelete_Sq(L, 3, e);
Test(L);
return 0;
}