自学内容网 自学内容网

顺序表专题

⽬录

1. 顺序表概念及结构

2. 顺序表分类

3. 实现动态顺序表

———————————————————————————————————————————

正文开始

1、顺序表的概念及结构

1.1 线性表

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...

线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。

案例:蔬菜分为绿叶类、⽠类、菌菇类。线性表指的是具有部分相同特性的⼀类数据结构的集合 如何理解逻辑结构和物理结构?

2、顺序表分类

• 顺序表和数组的区别

        ◦ 顺序表的底层结构是数组,对数组的封装,实现了常⽤的增删改查等接⼝

• 顺序表分类

        ◦ 静态顺序表

                概念:使⽤定⻓数组存储元素

\

静态顺序表缺陷:空间给少了不够⽤,给多了造成空间浪费

◦ 动态顺序表

这个可以扩容(增容)

3、动态顺序表的实现

#define INIT_CAPACITY 4
typedef int SLDataType;
// 动态顺序表 -- 按需申请
typedef struct SeqList
{
SLDataType* a;
int size; // 有效数据个数
int capacity; // 空间容量
}SL;
//初始化和销毁
void SLInit(SL* ps);
void SLDestroy(SL* ps);
void SLPrint(SL* ps);
//扩容
void SLCheckCapacity(SL* ps);
//头部插⼊删除 / 尾部插⼊删除
void SLPushBack(SL* ps, SLDataType x);
void SLPopBack(SL* ps);
void SLPushFront(SL* ps, SLDataType x);
void SLPopFront(SL* ps);
//指定位置之前插⼊/删除数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);
int SLFind(SL* ps, SLDataType x);

最后提一嘴,顺序表是线性表的一种

线性表有物理结构、逻辑结构

线性表物理结构不一定连续,逻辑结构连续

在这里顺序表的物理结构是连续的,逻辑结构也是连续的

———————————————————————————————————————————


原文地址:https://blog.csdn.net/linhai166025/article/details/142793678

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!