C语言写线性表的顺序存储结构

🍀 作者:我是一个茶壶
📌 每日一诗:莫道桑榆晚,为霞尚满天。--刘禹锡
🎨 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;
} 

本文为作者原创,转载请标明出处

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值