#include <stdlib.h>
#include <stdio.h>
//宏定义顺序表的空间大小
#define LISTSIZE 20
//宏定义函数返回值
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
//类型定义
typedef int ElemType;
//函数返回状态类型定义
typedef int State;
//声明顺序表类型结构体
typedef struct _SqList
{
ElemType data[LISTSIZE];
int length;
} SqList;
//初始化顺序表
void InitList(SqList *list)
{
list->length = 0;
}
//顺序表清空
State ClearList(SqList *list)
{
list->length = 0;
return OK;
}
//判断顺序表是否为空,为空返回TRUE,否则返回FALSE
State IsListEmpty(SqList *list)
{
if(list->length == 0)
return TRUE;
else
return FALSE;
}
//获得当前顺序表的长度
int GetLength(SqList *list)
{
return list->length;
}
//返回表中第index处的元素值(index从1到Length)
//判断表空
ElemType GetElement(SqList *list, int index)
{
//判断是否位空表
if(list->length <= 0)
{
printf("The array is empty");
exit(EXIT_FAILURE);
}
//检查是否越界
if(index < 1 || index > list->length)
{
printf("Array Index Out Of Bounds");
exit(EXIT_FAILURE);
}
return list->data[index-1];
}
//在表中第index处插入值为e的元素
//忘记判断表是否已满,忘记给长度加1
State InsertElement(SqList *list, int index, ElemType e)
{
//检查表空间是否已满
if(list->length >= LISTSIZE)
{
printf("Array Space Is Full");
return ERROR;
}
//检查插入位置是否合法
if(index<1 || index>list->length+1)
{
printf("Illegal Inserted Position");
return ERROR;
}
//元素移位
int i;
for(i = list->length; i>=index; i--)
{
list->data[i] = list->data[i-1];
}
//在位置index处插入元素e
list->data[index-1] = e;
//更新顺序表长度
list->length++;
return OK;
}
//删除表中第index处的元素
//注意判断表是否为空,给长度减1
State DeleteElement(SqList *list, int index)
{
//判断是否位空表
if(list->length <= 0)
{
printf("The array is empty");
return ERROR;
}
//检查删除位置是否合法
if(index<1 || index>list->length)
{
printf("Illegal deleted Position");
return ERROR;
}
//元素移位
int i;
for(i = index+1; i <= list->length; i++)
list->data[i-2] = list->data[i-1];
//更新表长度
list->length--;
return OK;
}
//返回L中第1个与e满足关系的数据元素的位序。 若这样的数据元素不存在,则返回值为-1
//考虑是否为空表,返回的是i+1
int LocateElement(SqList *list,ElemType e)
{
int i;
//判断是否位空表
if(list->length <= 0)
{
printf("The array is empty");
return -1;
}
for(i = 0; i < list->length; i++)
{
if(list->data[i] == e)
return i+1;
}
//不存在
return -1;
}
数据结构C语言实现之顺序表
最新推荐文章于 2022-09-28 23:33:24 发布