当前位置: 首页 > news >正文

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

1.顺序表的销毁和初始化:

初始化:

void SLInit(SeqList* ps)
{ps->a = NULL;ps->capacity = 0;ps->size = 0;
}

销毁:

void SLDestroy(SeqList* ps)
{if (ps->a)free(ps->a);ps->a = NULL;ps->size = ps->capacity = 0;
}

2.顺序表的扩容及打印:

扩容:

void CheckRoom(SeqList* ps)
{if (ps->size == ps->capacity){int newcapacity =  ps->capacity == 0 ? 4 : 2 * ps->capacity;SLDataType* tem = (SLDataType*)realloc(ps->a, sizeof(SLDataType) * newcapacity);ps->a = tem;ps->capacity = newcapacity;}
}

打印:

void PrintList(SeqList* ps)
{int i = 0;for (i = 0;i < ps->size;i++){printf("%d ", ps->a[i]);}
}

3.在顺序表的头部或尾部插入数据:

头插:

void PushFront(SeqList* ps,SLDataType x)
{CheckRoom(ps);int i = ps->size;for (i = ps->size - 1;i >= 0;i--){ps->a[i + 1] = ps->a[i];}ps->a[0] = x;ps->size++;
}

尾插:

void PushBack(SeqList* ps, SLDataType x)
{CheckRoom(ps);ps->a[ps->size] = x;ps->size++;
}

4.删除顺序表头部或尾部的数据:

头删:

void PopFront(SeqList* ps)
{assert(ps);assert(ps->size);for (int i = 1;i < ps->size;i++){ps->a[i - 1] = ps->a[i];}ps->size--;
}

尾删:

void PopBack(SeqList* ps)
{assert(ps);assert(ps->size);ps->size--;}

5.删除指定元素:

void Insert(SeqList* ps, SLDataType x)
{assert(ps);assert(ps->size);int i=Find(ps, x)-1;if (i < 0){printf("未找到数据\n");}else{for (i;i < ps->size-1;i++){ps->a[i] = ps->a[i + 1];}ps->size--;}
}

相关文章:

  • 二维码智慧门牌管理系统升级:一键报错解决三大问题
  • 电源管理(PMIC)MAX20428ATIA/VY、MAX20428ATIC/VY、MAX20428ATIE/VY适合汽车ADAS应用的开关稳压器
  • ORM-1 字段默认值
  • 06_es分布式搜索引擎2
  • 【广州华锐互动】VR历史古城复原:沉浸式体验古代建筑,感受千年风华!
  • 动态规划笔记+经典习题十道
  • CentOS7安装Docker及添加阿里云镜像加速详细教程
  • JS条件表达式
  • Java程序设计2023-第四次上机练习
  • WPF布局控件之WrapPanel布局
  • 【多线程】线程的创建
  • 『CV学习笔记』图像超分辨率等图像处理任务中的评价指标PSNR(峰值信噪比)
  • 【AutoML】AutoKeras 的安装和环境配置(VSCode)
  • PHP foreach 循环跳过本次循环
  • 队列实现(基于内存池思想)
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [译] React v16.8: 含有Hooks的版本
  • Android系统模拟器绘制实现概述
  • CSS 三角实现
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • IndexedDB
  • pdf文件如何在线转换为jpg图片
  • Python连接Oracle
  • rabbitmq延迟消息示例
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • webpack4 一点通
  • Xmanager 远程桌面 CentOS 7
  • 算法之不定期更新(一)(2018-04-12)
  • 我的业余项目总结
  • 在Mac OS X上安装 Ruby运行环境
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 【云吞铺子】性能抖动剖析(二)
  • const的用法,特别是用在函数前面与后面的区别
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 回归生活:清理微信公众号
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 飞书APP集成平台-数字化落地
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (52)只出现一次的数字III
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (过滤器)Filter和(监听器)listener
  • (一)Java算法:二分查找
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .NET 5种线程安全集合
  • .NET DataGridView数据绑定说明
  • .Net Web项目创建比较不错的参考文章
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET分布式缓存Memcached从入门到实战
  • ??javascript里的变量问题