顺序表的定义

本文详细介绍了顺序表的概念,包括静态分配和动态分配两种实现方式。在C语言中,顺序表通常使用静态数组或动态内存分配实现。静态分配使用固定大小的数组,而动态分配则通过malloc函数动态扩展存储空间。顺序表的特点包括随机访问、高存储密度,但插入和删除操作不便且扩展容量成本较高。动态分配虽然灵活,但涉及到元素复制,时间复杂度较高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
顺序表指的是使用顺序存储这一结构实现线性表
顺序存储是把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中来,元素之间的关系由存储单元的邻接关系来体现。

分为静态分配动态分配
在这里插入图片描述

C语言中得到一个数据元素大小的方式是sizeof(元素类型),比如sizeof(int)=4B。
在这里插入图片描述
实现静态分配的具体例子
在这里插入图片描述
首先,定义了一个顺序表,用静态数组来存放数据元素,然后定义了一个函数初始化顺序表,并在其中定义了此顺序表的初始长度为0,然后是主函数过程,这里不用把数组中的值都设置为0,因为现在也不需要读取,现在可读取的应该是当前数组大小范围内的值,而且顺序表的初始长度一定要设置为0,因为编译器可能不会将其置为0,从而影响后续操作。

当存储空间是静态时,当存储空间存满了就无法进行后续操作。

在这里插入图片描述
实现动态分配的过程,

首先,定义这个顺序表,设置动态分配数组的指针,这里指针指向的是数组的第一个元素的地址,不是指向数组本身,然后定义顺序表的最大容量,都为整数类型的,定义顺序表的当前长度。
定义初始化顺序表的函数,用mallon函数定义一片连续的存储空间,这个函数参数是初始化空间的大小,然后返回空间的首地址,并将首地址转换成int类型的,即和顺序表定义中的类型相同。
主函数中,先声明一个顺序表,这时系统内存为指针变量,顺序表容量,长度变量分配三个空间,然后初始化顺序表,申请一片连续的空间,长度为10,指针指向这个空间的首位,最后往顺序表里插入元素,顺序表当前长度为10,然后调用函数,增加空间。
增加动态数组长度的函数,定义指针变量,指向原来的地址首位,指向原来地址首位的指针开辟一个新的15的连续空间,然后再将原来空间的值传进来,再释放free原来大小为10的内存空间。

特点
1.能够随机访问线性表中的元素,因为可以由首地址计算任意元素的地址。
2.存储密度高,每个节点只存储数据元素。
3.扩展容量不方便,动态分配可以扩展容量,但是时间复杂度高,因为要复制原来空间中的元素。
4.插入和删除操作不方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值