恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

顺序表的基本操作集(C语言版)

  • 首页
  • 资讯中心
  • /
  • 顺序表的基本操作集(C语言版)

相关资讯

AI智能体当科研助理:三个月实战经验、架构设计与避坑指南 2026/10/16 5:42:34
30 分钟用 Blockbench 做出一个会挥手的小机器人:新手实战指南 2026/10/16 5:42:34
Grafana Mimir 官方 Helm Chart 深度指南:mimir-distributed 架构、配置与生产化实践 2026/10/16 5:42:34

最新资讯

PyTorch表情识别项目实战:从模型文件到推理部署全流程解析
网络协议分析实战:从抓包、静态分析到协议还原的完整拆解
重磅:谷歌新旗舰模型开放,价格腰斩还能自主改千万行代码
全卷积网络实战:从全连接到逐像素分割与Penn-Fudan数据集
模拟银行转账系统实战:并发扣款、事务回滚与锁机制落地
WindBorne获美空军近5000万美元气象数据合同

今日推荐

Java八种基本类型深度解析:从内存布局到实战选型
基础:常用快捷键——IDEA、VS Code、PyCharm 与 Linux 终端效率速查
解决ultraedit下verilog .v文件中文注释乱码:把编码配置改到TaoToken辅助排查

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

顺序表的基本操作集(C语言版)

发布时间:2026/10/16 5:42:34
顺序表的基本操作集(C语言版) /*顺序的操作集中一些常用的操作说明顺序表的操作可以根据需要灵活的编写操作接口比较多这里只写了一些常用的基本接口1、始化顺序表Status InitList_Sq(SqList L, int size, int increment);2、销毁顺序表Status DestroyList_Sq(SqList L);3、判断顺序表是否为空Status ListEmpty_Sq(SqList L);4、清空顺序表Status ClearList_Sq(SqList L);5、求顺序表的长度int ListLength_Sq(SqList L);6、读取顺序表中指定的第 i 个元素Status GetElem_Sq(SqList L, int i, ElemType e);7、顺序表中查找指定元素 e说明成功时返回该元素在表中第一次出现的位置否则返回 -1int Search_Sq(SqList L, ElemType e);8、顺序表的第 i 个元素赋值为 eStatus PutElem_Sq(SqList L, int i, ElemType e);9、在表尾添加一个元素Status Append_Sq(SqList L, ElemType e);10、在指定第 i 个元素之前插入元素Status ListInsert_Sq(SqList L, int i, ElemType e);11、删除表尾元素Status DeleteLast_Sq(SqList L, ElemType e)12、删除指定的第 i 个元素Status ListDelete_Sq(SqList L,int i, ElemType e);13、遍历顺序表 L说明依次对每个元素调用函数 visit()Status ListTraverse_Sq(SqList L, Status(*visit)(ElemType e));*/#includestdio.h#includestdlib.h#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define PERROR -2typedef int Status;// 数据元素的类型使用时需根据问题的需求定义。typedef int ElemType;//顺序表结构类型定义typedef struct {ElemType *elem; // 存储空间的基址int length; // 表长int size; // 存储容量int increment; // 扩容增量} SqList;// 1、初始化顺序表 LStatus InitList_Sq(SqList L, int size, int inc){L.elem (ElemType *)malloc(size * sizeof(ElemType));if (L.elem NULL) return OVERFLOW;L.length 0;L.size size;L.increment inc;return OK;}// 2、销毁顺序表 LStatus DestroyList_Sq(SqList L) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回不再执行销毁操作free(L.elem); // 释放顺序表所占空间L.elem NULL; // 避免指针悬挂L.length 0;L.size 0;L.increment 0;return OK;}// 3、判断顺序表 L 是否为空表Status ListEmpty_Sq(SqList L) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if(L.length 0) {return TRUE;}else{return FALSE;}}// 4、清空顺序表 LStatus ClearList_Sq(SqList L) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回L.length 0;return OK;}// 5、求顺序表的长度int ListLength_Sq(SqList L) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回return L.length;}// 6、读取顺序表中指定的第 i 个元素Status GetElem_Sq(SqList L, int i, ElemType e) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if(i1 || iL.length) return PERROR; // 参数合法性检查非法则返回e L.elem[i-1];return OK;}// 7、在顺序表 L 顺序查找元素e// 成功时返回该元素在表中第一次出现的位置否则返回 -1int Search_Sq(SqList L, ElemType e) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回int i 0;while (i L.length L.elem[i] ! e){i;}if (i L.length){return i;}else{return -1;}}// 8、把顺序表的第 i 个元素赋值为 eStatus PutElem_Sq(SqList L, int i, ElemType e) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if(i1 || iL.length) return PERROR; // 参数合法性检查非法则返回L.elem[i-1] e;return OK;}// 9、在顺序表 L 的表尾添加元素 eStatus Append_Sq(SqList L, ElemType e) {ElemType *newbase;if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if (L.length L.size){ // 满了需要扩容newbase (ElemType*)realloc(L.elem, (L.size L.increment)*sizeof(ElemType));if(newbaseNULL) return OVERFLOW;L.elem newbase;L.size L.increment;}L.elem[L.length] e;L.length;return OK;}// 10、在顺序表 L 的指定第 i 个元素之前插入元素Status ListInsert_Sq(SqList L, int i, ElemType e){ElemType *newbase;int l,r;if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if(i 1 || i L.length1) return PERROR; // 数合法性检查非法则返回if (L.length L.size){ // 满了需要扩容newbase (ElemType*)realloc(L.elem, (L.size L.increment)*sizeof(ElemType));if(newbaseNULL) return OVERFLOW;L.elem newbase;L.size L.increment;}l i-1; // l为插入位置for(r L.length-1; r l; r--){L.elem[r1] L.elem[r]; //插入位置及之后的元素后移}L.elem[l] e; //插入eL.length; //表长加 1return OK;}// 11、删除表尾元素Status DeleteLast_Sq(SqList L, ElemType e) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if(L.length 0) return ERROR; // 空表无法删除e L.elem[L.length - 1];L.length--;return OK;}// 12、在顺序表 L 中删除指定的第 i 个元素并用 e 将其返回Status ListDelete_Sq(SqList L, int i, ElemType e){int r; // 后面的元素移位迭代用变量if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if(i 1 || i L.length) return ERROR; // 参数合法性检查非法则返回e L.elem[i-1]; // 将第 i 个元素交给 efor(r i;r L.length;r){L.elem[r-1] L.elem[r]; // 将删除位置之后的元素依次前移}L.length--; //表长减一return OK;}// 13、遍历顺序表 L 依次对每个元素调用函数 visit()Status ListTraverse_Sq(SqList L, Status(*visit)(ElemType e)) {if(L.elem NULL)return PERROR; // 参数合法性检查顺序表已销毁则返回if (L.length 0) return ERROR; // 空表不再遍历访问for (int i 0; i L.length; i) {visit(L.elem[i]);}return OK;}// 测试用函数打印顺序表的全部元素Status PrintList(ElemType e) {printf(%d\t,e);return OK;}int main(){int i, e, state;static SqList L;printf(1.初始化顺序表\n);printf(2.销毁顺序表\n);printf(3.判断顺序表是否为空\n);printf(4.清空顺序表\n);printf(5.求顺序表的长度\n);printf(6.读取顺序表中指定的第 i 个元素\n);printf(7.在顺序表中查找指定元素\n);printf(8.将顺序表的第 i 个元素赋值为 e\n);printf(9.在顺序表中的表尾添加一个元素\n);printf(10.在指定第 i 个元素之前插入元素\n);printf(11.删除表尾元素\n);printf(12.删除指定的第 i 个元素\n);printf(13.打印顺序表中的全部元素\n);do{printf(请输入你要进行的操作\n);scanf(%d,i);switch(i){case 1 :state InitList_Sq(L, 10, 5);if(state OK){printf(顺序表初始化成功。\n);}else{printf(顺序表初始化失败\n);}break;case 2 :state DestroyList_Sq(L);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else{printf(顺序表销毁成功。\n);}break;case 3 :state ListEmpty_Sq(L);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state TRUE){printf(顺序表为空\n);}else if(state FALSE){printf(顺序表不为空!\n);}break;case 4 :state ClearList_Sq(L);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else{printf(已为您清空顺序表。\n);}break;case 5 :state ListLength_Sq(L);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else{printf(当前顺序表中共有 %d 个元素\n,state);}break;case 6 :printf(请输入将需要读取的是第几个元素\n);scanf(%d,i);state GetElem_Sq(L, i, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else{printf(顺序表中第 %d 个元素是 %d \n,i,e);}break;case 7 :printf(请输入将想要查找的元素\n);scanf(%d,e);state Search_Sq(L, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state -1){printf(顺序表没有这个元素\n);}else{printf(查找成功您要找的元素是顺序表的第 %d 个元素。\n,state1);}break;case 8 :printf(请输入更换的元素的位置\n);scanf(%d,i);printf(请输入您想将元素更换为\n);scanf(%d,e);state PutElem_Sq(L, i, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else{printf(元素更换成功。\n);}break;case 9 :printf(请输入您想在表尾追加的元素为\n);scanf(%d,e);state Append_Sq(L, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state OK){printf(元素 %d 追加成功。\n,e);}else{printf(元素 %d 追加失败\n,e);}break;case 10 :printf(请输入您想在第几个元素前插入元素\n);scanf(%d,i);printf(请输入您想插入的元素为\n);scanf(%d,e);state ListInsert_Sq(L, i, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state OK){printf(元素 %d 插入成功。\n,e);}else{printf(元素 %d 插入失败\n,e);}break;case 11 :state DeleteLast_Sq(L, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state OK){printf(顺序表表尾元素已成功删除。\n);}else{printf(顺序表内没有元素不能执行删除表尾元素操作\n);}break;case 12 :printf(请输入您删除的是顺序表中的第几个元素\n);scanf(%d,i);state ListDelete_Sq(L, i, e);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state OK){printf(指定的元素已成功删除。\n);}else{printf(顺序表指定位置元素不存在无法删除\n);}break;case 13 :state ListTraverse_Sq(L, PrintList);if(state PERROR){printf(请确认参数合法化或者先执行顺序表的初始化操作\n);}else if(state ERROR){printf(当前的顺序表为空表。\n);}else{printf(\n);}break;}}while(i1i13);return 0;}

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号