动态顺序表(详解)附带源码

目录

概念:

头插:

尾插:

头删:

​编辑尾删:

源码:

头文件:​编辑

函数定义:

测试:

顺序表优缺点:


概念:

n个具有相同特性的数据元素的有限序列
常见的顺序表有:顺序表、链表、栈、队列、字符串等逻辑结构:一条线,即一个元素接着一个元素,类似于:1-2-3-4-5-6-7-。。。

逻辑结构:一条线,即一个元素接着一个元素,类似于:1-2-3-4-5-6-7-。。。
物理结构:即数据在计算机内的实际存储结构,通常以数组和链式结构的形式存储
通常使用数组来实现顺序表,有两种方式:
静态顺序表:定长数组
动态顺序表:申请动态数组
但是,推荐使用动态数组实现,相较于静态更灵活方便

以下是定义方式:

在编程中,可以写一个头文件管理代码,管理函数的声明
一个.c文件管理函数的具体实现代码,
一个.c文件main函数测试,例如:

初始化顺序表:

在动态分配内存时,因为有分配内存失败的可能,所以每次分配都要进行检验,增加程序容错

断言assert函数,用于终止程序
头文件是:include<assert.h>

顺序表从头开始,依次存储,其具有的基本操作有如下四种:
头插、尾插、头删、尾删、随机插入、随机删除

在写代码时,建议:一个函数一个函数的写,一个接口一个接口的实现,简单,通透


头插:

数据从头部前插入
空表:直接插入
非空表:所有的数据往后移动一位,
然后在第一个位置即0位置索引位置添加元素即可,然后size++
满表:扩容,再插入

如图所示:

尾插:

数据从最尾端插入
空表或者未满表直接插入
满表扩容再插入
size记录的是最后一个元素的下一个位置的位置,
无需位置移动
直接加入数据,size++,如图:
 

随机插入:任意位置插入数据(需断言:即位置属于合适位置)

头删:

从头部开始删除数据
直接将数据从后往前挪动即可

定义一个start = 0记录头位置,往前移动一个,start++,直到start == size停止


尾删:

从尾部开始删除
直接size--即可

源码:

头文件:

函数定义:

测试:

顺序表优缺点:

动态顺序表的优点:
1、插入数据,空间不够会扩容
2、要求数据是依次存储
缺点:
1、造成空间浪费,比如,100个元素满了之后只要加一个元素,但是空间却是200
2、头部或者中部位置插入数据和删除效率低,因为都要移动n个数据,时间复杂度是O(N)

而链表的结构就正好解决了这样的缺问题:关于链式存储,请看博主另外的博客。
1、空间上,按需求分配空间,你要几个我就给你几个空间
2、不要求物理空间连续,头部和中间的插入就不需要挪动位置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十5画生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值