【数据结构】线性表、顺序表及其优缺点、顺序表扩容、源代码

本文深入解析线性表的概念及其两种主要形式——静态顺序表和动态顺序表。详细介绍了它们的存储结构、关键操作及源代码实现,帮助读者理解并掌握线性表的基本原理。

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

1.线性表

1.1概念

线性表(linear list)是n个具有相同特性的数据元素的有限序列。
常见的线性表:顺序表、链表、栈、队列、字符串等。

1.2特征

逻辑上:是线性结构,即连续的一条直线。
物理上:并不一定是连续的。
ps:线性表在物理上存储时,通常以数组(顺序存储结构)和链式存储结构的形式存储。
在这里插入图片描述
在这里插入图片描述

2.顺序表

2.1概念

顺序表是线性表的一种,其数据元素 在逻辑上相邻,在物理地址存储单元上连续依次存储的线性结构。
一般情况下采用数组存储。分为 静态顺序表 和 动态顺序表。

2.2顺序表优缺点

1.优点:
数组或动态增长的数组,常用数组或指针来实现。
2.缺点:
(1)头部或中间插入删除数据,效率较低,要挪动数据,时间复杂度O(n)。
(2)扩容:效率的影响,而且会存在一定程序空间的浪费。

3.静态顺序表

3.1概念

使用定长数组存储数据元素。
(1)静态顺序表只适用于知道需要存多少数据的场景。
(2)静态顺序表的定长数组大小MAXSIZE开大了,浪费空间,开少了,不够用。(本篇blog重点讲述动态顺序表)

3.2存储结构

#define ElemType int
#define MAXSIZE 10

typedef struct
{
   
	ElemType elem[MAXSIZE];
	int last;//last记录最后一个元素的下标,若为空表则last为-1
}SeqList;

3.3源代码(自取)

👉静态顺序表源代码点这里

3.4相关函数接口

void SeqListInit(SeqList *L);//初始化
void Push_Back(SeqList *L, ElemType x);//尾插
void Push_Front(SeqList *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值