🍀 作者:我是一个茶壶
📌 每日一诗:莫道桑榆晚,为霞尚满天。--刘禹锡
🎨 ps:今天给大家分享一下我写的线性表的顺序存储结构的功能实现吧!因为作者刚开始写没明白改名机制,五次全改成了yimo37,
所以下个月会改回去,改成“我是一个茶壶”。
今天不想再写安全的知识了,就水一期吧!分享一下我写的线性表的顺序存储结构的功能实现吧!
函数功能简介
int InitList(List *L);
线性表初始化
int DestroyList(List *L);
销毁线性表
int ClearList(List *L);
清空线性表
int ListEmpty(List L);
判断线性表表是否为空
int ListLength(List L);
返回线性表的长度
int Compare(int length,int i);
比较i与length的大小
int GetElem(List L,int i,int *e);
获取当前元素
int LocateElem(List L,int e);
获取当前元素位置
int PriorElem(List L,int cur_e,int *pre_e);
获取前一个元素
int NextElem(List L,int cur_e,int *next_e);
获取后一个元素
代码如下
#include<stdio.h>
#include<stdlib.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int *elem;
int length;
int listsize;
}List;
int InitList(List *L);
int DestroyList(List *L);
int ClearList(List *L);
int ListEmpty(List L);
int ListLength(List L);
int GetElem(List L,int i,int *e);
int Compare(int length,int i);
int LocateElem(List L,int e);
int PriorElem(List L,int cur_e,int *pre_e);
int NextElem(List L,int cur_e,int *next_e);
int InitList(List *L)
{
L->elem = (int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L->elem) exit(OVERLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
return OK;
}//InitList
int DestroyList(List *L)
{
free(L->elem);
L->length=0;
L->listsize=0;
if(!L->elem) exit(OVERLOW);
return OK;
}//DestroyList
int ClearList(List *L)
{
int i;
for(i=0;i<L->length;i++)
{
L->elem[i]=0;
}
if(i==L->length-1)
{
L->length=0;
return OK;
}
else
return ERROR;
}//ClearList
int ListEmpty(List L)
{
if(L.length==0)
return TURE;
else
return FALSE;
}//ListEmpty
int ListLength(List L)
{
return L.length;
}//ListLength
int GetElem(List L,int i,int *e)
{
int j;
if(i<1||i>L.length)
return ERROR;
*e = L.elem[i-1];
return OK;
}//GetElem
int Compare(int length,int i)
{
return i>=0&&length>i ? 1:0;
}//Compare
int LocateElem(List L,int e)
{
int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==e) break;
if(Compare(L.length,i))
return i;
else
return FALSE;
}// LocateElem
int PriorElem(List L,int cur_e,int *pre_e)
{
int index =LocateElem(L,cur_e);
if(index>0&&index<L.length)
{
*pre_e = L.elem[index-1];
return OK;
}
else
return ERROR;
}// PriorElem
int NextElem(List L,int cur_e,int *next_e)
{
int index =LocateElem(L,cur_e);
if(index>=0&&index<L.length-1)
{
*next_e = L.elem[index+1];
return OK;
}
else
return ERROR;
}// NextElem
int main()
{
List L;
int result;
result=InitList(&L);
// result=DestroyList(&L);
// result=ClearList(&L);
// result=ListEmpty(L);
result=ListLength(L);
printf("%d",result);
return 0;
}
本文为作者原创,转载请标明出处