千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,SeqList.h#ifndef SEQ_LIST_H#define SEQ_LIST_Htypedef void SeqListNode;typedef void SeqList;/* * 创建顺序
千家信息网最后更新 2026年11月01日【C语言数据结构】顺序表

SeqList.h

#ifndef SEQ_LIST_H#define SEQ_LIST_Htypedef void SeqListNode;typedef void SeqList;/* * 创建顺序表 * @param capacity 顺序表的最大容量 * @return 返回顺序表的指针 */SeqList* SeqList_Create(unsigned int capacity);/* * 销毁顺序表 * @param list 顺序表的指针 */void SeqList_Destroy(SeqList *list);/* * 清空顺序表 * @param list 顺序表的指针 */void SeqList_Clear(SeqList *list);/* * 向顺序表pos位置处插入元素 * @param list 顺序表指针 * @param node 元素指针 * @param pos 插入的索引 */int SeqList_Insert(SeqList *list,SeqListNode *node,int pos);/* * 获取顺序表中索引位置处的元素 * @param list   顺序表指针 * @param pos   顺序表索引值 * @param return 元素指针 */SeqListNode* SeqList_Get(SeqList *list,int pos);/* * 删除顺序表中索引位置处的值 * @param list 顺序表的指针 * @param pos   顺序表索引 * @param return 非0表示删除成功 */int SeqList_Remove(SeqList *list,int pos);/* * 获取顺序表当前已存储元素的个数 * @param list 顺序表的指针 * @return 顺序表中已存储元素的个数 */int SeqList_Length(SeqList *list);/* * 获取顺序表最大可存储元素的个数 * @param list 顺序表的指针 * @return 顺序表最大可存储元素的个数 */int SeqList_Capacity(SeqList *list);#endif // SEQLIST_H

SeqList.c

#include "SeqList.h"#include typedef unsigned int TSeqListNode;  //顺序表节点typedef struct _SeqList{    unsigned int length;    //顺序表已存储元素的个数    unsigned int capacity;  //顺序表最大可存储元素的个数    TSeqListNode *element[];//顺序表节点柔性数组}TSeqList;/* * 创建顺序表 * @param capacity 顺序表的最大容量 * @return 返回顺序表的指针 */SeqList* SeqList_Create(unsigned int capacity){    TSeqList *list = 0;    //创建一个可容纳SeqList结构体与柔性节点的空间    int size = sizeof(TSeqList) + sizeof(TSeqListNode) * capacity;    list = (TSeqList *)malloc(size);    if(list != 0)    {        list->length = 0;        list->capacity = capacity;    }    return list;}/* * 销毁顺序表 * @param list 顺序表的指针 */void SeqList_Destroy(SeqList *list){    free(list);}/* * 清空顺序表 * @param list 顺序表的指针 */void SeqList_Clear(SeqList *list){    TSeqList *s_list = (TSeqList *)list;    if(s_list != 0)    {        s_list->length = 0;    }}/* * 向顺序表pos位置处插入元素 * @param list 顺序表指针 * @param node 元素指针 * @param pos 插入的索引 * @param return 返回非0表示插入成功 */int SeqList_Insert(SeqList *list,SeqListNode *node,int pos){    int i;    //判断顺序表指针和被插入元素的指针是否为空    int ret = ((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++;    }    return ret;}/* * 获取顺序表中索引位置处的元素 * @param list   顺序表指针 * @param pos   顺序表索引值 * @param return 元素指针 */SeqListNode* SeqList_Get(SeqList *list,int pos){    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];    }    return s_node;}/* * 删除顺序表中索引位置处的值 * @param list 顺序表的指针 * @param pos   顺序表索引 * @param return 顺序表中索引位置处元素的值 */int SeqList_Remove(SeqList *list,int pos){    int i;    TSeqList *s_list = (TSeqList *)list;    int ret = ((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--;    }    return ret;}/* * 获取顺序表当前已存储元素的个数 * @param list 顺序表的指针 * @return 顺序表中已存储元素的个数 */int SeqList_Length(SeqList *list){    TSeqList *s_list = (TSeqList *)list;    int ret = -1;    if(s_list != 0)    {        ret = s_list->length;    }    return ret;}/* * 获取顺序表最大可存储元素的个数 * @param list 顺序表的指针 * @return 顺序表最大可存储元素的个数 */int SeqList_Capacity(SeqList *list){    TSeqList *s_list = (TSeqList *)list;    int ret = (s_list != 0);    if(ret)    {        ret = s_list->capacity;    }    return ret;}


顺序 指针 元素 索引 个数 存储 最大 位置 节点 合法 成功 容量 数组 柔性 空间 数据 结构 参数 剩余 数据结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司华为 互联网科技金融 齐家互联网科技 互联网科技视频 狮子座互联网科技有限公司 亿人帮互联网科技 新华互联网科技2019 中国的互联网科技企业的崛起 顶级互联网科技成果有哪些 晓花互联网科技有限公司网址 深圳市优智互联网科技有限公司 企晟互联网信息科技有限公司 长沙茂晟互联网科技有限公司 互联网方面的科技前沿 互联网金融科技元年 广东工业互联网大赛深圳学泰科技 卡尔迅互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司 互联网企业和网络科技有限公司 利用互联网等科技手段 上海挚品互联网科技有限公司 互联网科技小贷 为想互联网科技 友谊互联网络科技 中国最先进互联网科技公司 昊天互联网科技有限公司 广州新华互联网科技学校电竞方面 互联网科技年终奖 美国五大互联网科技公司市值多少 互联网科技创新创业项目
0