数据结构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;}

原创粉丝点击