数据结构c语言实验报告 顺序表的实现,数据结构C语言实现之顺序表

#include //宏定义顺序表的空间大小

#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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值