数据结构--1-2章-线性表

本文介绍了数据结构的三要素——逻辑结构、存储结构和数据运算,详细阐述了顺序存储、链式存储、索引存储和散列存储的优缺点。此外,讨论了算法效率度量,特别是时间复杂度和空间复杂度的概念。线性表作为基础数据结构,其顺序表和单链表的特性也被详细分析,强调了它们在存储和访问效率上的差异。

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

第一章

数据结构三要素

三要素:逻辑结构、存储结构、数据运算。
数据的逻辑结构分为线性结构非线性结构。如下:
在这里插入图片描述
存储结构:顺序存储、链式存储、索引存储和散列存储。

  1. 顺序存储:逻辑上相邻的元素存储在物理位置上也相邻的存储单元中。优点为可实现随机存取,每个元素占用最少的存储空间;缺点是只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片。

  2. 链式存储:不要求逻辑上相邻的元素在物理位置上相邻。借助指示元素存储地址的指针来表示元素之间的关系。优点是不会出现碎片现象,能充分利用所有存储单元;缺点是每个元素因存储指针而占用额外的存储空间,且只能顺序存取

  3. 索引存储:在存储元素信息的同时,还建立附加的索引表。索引表中的每项成为索引项,索引项的一般形式是(关键字,地址)。其优点是检索速度快;缺点是附加的索引表额外占用存储空间。另外,增加和删除数据是也要修改索引表,因而会花费较多的时间。

  4. 散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。其优点是检索、增加和删除节点的操作都很快;缺点是若散列函数不好,可能会出现元素存储单元的冲突,而解决冲突会增加时间和空间的开销。

算法效率度量

程序语句的频度:在算法中被重复执行的次数。
算法中所有语句的频度之和为T(n),时间复杂度可理解为最深层循环内的语句的频度,它与T(n)同数量级。

时间复杂度O(n):最好、平均、最坏时间复杂度。
平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间。
一般总是考虑在最后情况下的时间复杂度,以保证算法的运行时间不会比它更长。

空间复杂度S(n):算法所耗费的存储空间。

第二章 线性表

顺序表:线性表的顺序存储,表中元素逻辑顺序和物理顺序相同。

线性表的特点:

  1. 元素个数有限。
  2. 元素具有逻辑上的顺序性,表中元素有其先后次序。
  3. 表中元素都是数据元素,每个元素都是单个元素。
  4. 表中元素的数据类型都相同,这意为着每个元素占有相同大小的存储空间。

线性表是一种逻辑结构,表示元素之间一对一的相邻关系。
顺序表、邻接表和链表是存储结构。两者不同。

单链表

单链表:线性表的链式存储。
单链表中节点类型的定义:

typedef struct LNode{
	类型名(如int) data;
	struct LNode *next;
}LNode,LinkList;

由于单链表的元素离散地分布在存储空间中,所以单链表是非随机存取的存储结构。
查找某个特定的节点时需要从表头开始遍历,依次查找。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值