【数据结构】静态 & 动态顺序表

线性表 :顺序存储来实现线性表

链表 :链式存储实现线性表

顺序存储 :存放在一段连续物理存储单元 ,数据元素之间的逻辑关系由物理存储关系体现

链式存储 :存储在任意的一组物理存储单元 ,数据元素之间的逻辑关系用指针来表示

静态顺序表 :且大小固定(无法扩容 )的数组

动态顺序表 :可以自动调节大小(可扩容)的数组

1、静态顺序表

c 复制代码
// typedef是为了方便类型替换
typedef int SqDataType;

// 顺序表的最大存储的数据个数
#define Sq_MAX_SIZE 10

// 静态顺序表结构定义
//typedef struct SequenceList {
//	SqDataType arr[Sq_MAX_SIZE]; //存储数据的静态数组
//	int size;                    //记录顺序表中已经存入的数据个数
//}SqLinst;

// 也可以直接定义匿名结构体,再 typedef 一个名称,如下:
typedef struct {
	SqDataType arr[Sq_MAX_SIZE];
	int size;
}SqLinst;

(1)代码详解:

c 复制代码
typedef int SqDataType;
  • typedef 原类型名 新类型名(别名);
    • 原类型名:int
    • 新类型名(别名):SqDataType

(2)代码详解:

c 复制代码
#define Sq_MAX_SIZE 10
  • #define 宏定义:在程序编译前,会把代码中所有出现的 Sq_MAX_SIZE 替换成 10
    注意:尾部没有任何符号

(3)代码详解:

c 复制代码
typedef struct {
	SqDataType arr[Sq_MAX_SIZE]; //存储数据的静态数组
	int size;					 //记录顺序表中已经存入的数据个数
}SqLinst;
  • struct:结构体类型。将几个不同类型、属于同一个整体的变量打包放到一起,创造一个组合出来的新类型
  • typedef struct:就是我们自己造出来的新类型,就像 int、char 一样,只不过是我们自己定义的。
    • typedef 【原来的类型】 【新别名】;
    • 套进现在的代码:
      • 【原来的类型】:struct { SqDataType arr[Sq_MAX_SIZE]; int size; }(一整个匿名结构体)
      • 【新别名】:SqLinst
    • 相当于告诉编译器:以后我写 SqLinst,就等同于写上面那一大串匿名结构体。

2、动态顺序表

c 复制代码
// 动态顺序表
 
// typedef是为了方便类型替换
typedef int SqDataType;

// 动态顺序表结构定义
//typedef struct SequenceList {
//	SqDataType* arr;			 //存储数据的动态数组
//	int size;					 //记录顺序表中已经存入的数据个数
//	int capacity;				 //动态数组的容量空间的大小
//}SqLinst;

// 也可以直接定义匿名结构体,再 typedef 一个名称,如下:
typedef struct {
	SqDataType* arr;			 //存储数据的动态数组
	int size;					 //记录顺序表中已经存入的数据个数
	int capacity;				 //动态数组的容量空间的大小
}SqLinst;
相关推荐
番茄味城市甜菜2 小时前
数据结构:双向链表实现,链表与顺序表的对比
数据结构·链表
wuyoutrans3 小时前
以色列专利OA答复翻译,重点要避开哪些坑?
笔记
宝绿特塑业再生科技3 小时前
HDPE再生颗粒户外家具表面粉化机理与改性技术全解析
笔记·户外家具·再生塑料·塑木桌椅
凉、介4 小时前
深入理解 ARMv7-A | Generic Timer
笔记·学习·嵌入式·arm
n 55!w !1084 小时前
MySQL笔记整理2
数据库·笔记·mysql
La Pulga5 小时前
【FreeRTOS源码学习笔记】任务创建
笔记·stm32·mcu·学习·嵌入式·freertos·实时操作系统
Zhao-Jichao5 小时前
AI Prompting for Everyone 课程笔记 - P06 模型提示词对比 AI Model Prompt Comparison
人工智能·笔记·prompt
computersciencer5 小时前
贝叶斯入门:由全概率公式引出贝叶斯公式
笔记·数学建模·概率论
叼烟扛炮6 小时前
Linux 学习笔记(四十七):TCP 状态机与 tcpdump 抓包排雷实战
linux·网络·笔记·学习·tcp/ip·tcpdump
蒸蒸yyyyzwd6 小时前
从面经中学到的 5 个知识
笔记