数据结构C语言实现之顺序表
来源:互联网 发布:没有rpm yum 编辑:程序博客网 时间:2024/04/27 09:59
#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,否则返回FALSEState 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的元素//忘记判断表是否已满,忘记给长度加1State 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处的元素//注意判断表是否为空,给长度减1State 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+1int 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;}