欢迎光临散文网 会员登陆 & 注册

【C语言数据结构】顺序表

2021-08-20 11:12 作者:Vecloud_  | 我要投稿


SeqList.h 

#ifndefSEQ_LIST_H#defineSEQ_LIST_HtypedefvoidSeqListNode;typedefvoidSeqList;/**创建顺序表*@paramcapacity顺序表的最大容量*@return返回顺序表的指针*/SeqList*SeqList_Create(unsignedintcapacity);/**销毁顺序表*@paramlist顺序表的指针*/voidSeqList_Destroy(SeqList*list);/**清空顺序表*@paramlist顺序表的指针*/voidSeqList_Clear(SeqList*list);/**向顺序表pos位置处插入元素*@paramlist顺序表指针*@paramnode元素指针*@parampos插入的索引*/intSeqList_Insert(SeqList*list,SeqListNode*node,intpos);/**获取顺序表中索引位置处的元素*@paramlist顺序表指针*@parampos顺序表索引值*@paramreturn元素指针*/SeqListNode*SeqList_Get(SeqList*list,intpos);/**删除顺序表中索引位置处的值*@paramlist顺序表的指针*@parampos顺序表索引*@paramreturn非0表示删除成功*/intSeqList_Remove(SeqList*list,intpos);/**获取顺序表当前已存储元素的个数*@paramlist顺序表的指针*@return顺序表中已存储元素的个数*/intSeqList_Length(SeqList*list);/**获取顺序表最大可存储元素的个数*@paramlist顺序表的指针*@return顺序表最大可存储元素的个数*/intSeqList_Capacity(SeqList*list);#endif//SEQLIST_HSeqList.c 
#include"SeqList.h"#include<malloc.h>typedefunsignedintTSeqListNode;//顺序表节点typedefstruct_SeqList{unsignedintlength;//顺序表已存储元素的个数unsignedintcapacity;//顺序表最大可存储元素的个数TSeqListNode*element[];//顺序表节点柔性数组}TSeqList;/**创建顺序表*@paramcapacity顺序表的最大容量*@return返回顺序表的指针*/SeqList*SeqList_Create(unsignedintcapacity){TSeqList*list=0;//创建一个可容纳SeqList结构体与柔性节点的空间intsize=sizeof(TSeqList)+sizeof(TSeqListNode)*capacity;list=(TSeqList*)malloc(size);if(list!=0){list->length=0;list->capacity=capacity;}returnlist;}/**销毁顺序表*@paramlist顺序表的指针*/voidSeqList_Destroy(SeqList*list){free(list);}/**清空顺序表*@paramlist顺序表的指针*/voidSeqList_Clear(SeqList*list){TSeqList*s_list=(TSeqList*)list;if(s_list!=0){s_list->length=0;}}/**向顺序表pos位置处插入元素*@paramlist顺序表指针*@paramnode元素指针*@parampos插入的索引*@paramreturn返回非0表示插入成功*/intSeqList_Insert(SeqList*list,SeqListNode*node,intpos){inti;//判断顺序表指针和被插入元素的指针是否为空intret=((list!=0)&&(node!=0));TSeqList*s_list=(TSeqList*)list;TSeqListNode*s_node=(TSeqListNode*)node;//判断插入的索引是否合法,数组空间是否剩余ret=((pos>=0)&&(pos<=s_list->length)&&(s_list->length+1<=s_list->capacity));if(ret){//参数合法,可以插入//从最后一个开始把数据往后挪for(i=s_list->length;i>pos;i--){s_list->element[i]=s_list->element[i-1];}s_list->element[i]=s_node;s_list->length++;}returnret;}/**获取顺序表中索引位置处的元素*@paramlist顺序表指针*@parampos顺序表索引值*@paramreturn元素指针*/SeqListNode*SeqList_Get(SeqList*list,intpos){SeqListNode*s_node=0;TSeqList*s_list=(TSeqList*)list;if((s_list!=0)&&(pos>=0)&&(pos<s_list->length)){s_node=s_list->element[pos];}returns_node;}/**删除顺序表中索引位置处的值*@paramlist顺序表的指针*@parampos顺序表索引*@paramreturn顺序表中索引位置处元素的值*/intSeqList_Remove(SeqList*list,intpos){inti;TSeqList*s_list=(TSeqList*)list;intret=((s_list!=0)&&(pos>=0)&&(pos<s_list->length));if(ret){for(i=pos+1;i<s_list->length;i++){s_list->element[i-1]=s_list->element[i];}s_list->length--;}returnret;}/**获取顺序表当前已存储元素的个数*@paramlist顺序表的指针*@return顺序表中已存储元素的个数*/intSeqList_Length(SeqList*list){TSeqList*s_list=(TSeqList*)list;intret=-1;if(s_list!=0){ret=s_list->length;}returnret;}/**获取顺序表最大可存储元素的个数*@paramlist顺序表的指针*@return顺序表最大可存储元素的个数*/intSeqList_Capacity(SeqList*list){TSeqList*s_list=(TSeqList*)list;intret=(s_list!=0);if(ret){ret=s_list->capacity;}returnret;} 

了解更多网络知识关注:http://www.vecloud.com/

【C语言数据结构】顺序表的评论 (共 条)

分享到微博请遵守国家法律