数据结构知识点总结

本文详细介绍了数据结构的基础知识,包括数据元素、逻辑结构和存储结构,特别讨论了线性表的逻辑结构和存储表示,如顺序表和链表。此外,还涵盖了抽象数据类型(ADT)的概念,以及线性表的插入算法分析。文章进一步比较了顺序表和链表的优缺点,并探讨了栈和队列的特性。最后,提到了数组、多维数组和特殊矩阵的存储方式,以及哈希表和字符串处理的基本概念。
摘要由CSDN通过智能技术生成

数据结构的基本概念

数据:所有能输入到计算机中并能被计算机程序识别和处理的符号集合。

      数值数据:整数、实数等

      非数值数据:图形、图象、声音、文字等

数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据项:构成数据元素的不可分割的最小单位。

数据结构:相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。

数据、数据元素、数据项之间的关系

包含关系:数据由数据元素组成,数据元素由数据项组成。数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。

逻辑结构:指数据元素之间逻辑关系的整体。数据元素的关系(逻辑结构)可分为四类:集合,线性结构,非线性结构(树形结构,图状或网状结构)。数据的逻辑结构是从具体问题抽象出来的数据模型。数据的逻辑结构在形式上可定义为一个二元组:Data_Structure = (D, R)

其中D是数据元素的有限集合,RD上关系的集合。R可以用次序对集合表示。

存储结构:又称为物理结构,是数据及其逻辑结构在计算机中的表示。存储结构实质上是内存分配,在具体实现时依赖于计算机语言。数据的存储结构又称数据的物理结构------逻辑结构在存储器中的表示(又称映像)

数据的存储结构依赖于计算机语言

 顺序存储表示

 链接存储表示

 索引存储表示

 散列存储表示

1 顺序存储结构:

    以存储位置的相邻表示后继关系(y的存储位置和x的存储位置之间是一个常量C)而C是一个隐含值,整个存储结构中只含数据元素本身的信息。

2  链式存储结构:

    以附加信息(指针)表示后继关系。需用一个和x在一起的附加信息指示y的存储位置

逻辑结构和存储结构之间的关系数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于具体实现的视图,是面向计算机的。一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。

抽象数据类型

1.数据类型(Data Type):一组值的集合以及定义于这个值集上的一组操作的总称。(有原子类型和构造类型),例如:C++中的整型变量 。所以,在某种意义上,数据类型可以看成由一种数据结构和定义在其上的一组操作的总称。

2. 抽象数据类型(Abstract Data TypeADT:一个数据结构以及定义在该结构上的一组操作接口的总称。其定义取决于它的一组逻辑特性,  而与其在计算机内如何表示和实现无关。   以后我们用抽象数据类型来描述数据结构.

ADT有两个重要特征

1.数据抽象:用ADT描述程序处理的实体时,强调的是其本质的特征,其所能完成的功能及它和外部用户的接口(即外界使用它的方法)。

 

2.数据封装:将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。

线性表的定义

线性表:简称表,是nn0)个具有相同类型的数据元素的有限序列。

线性表的长度:线性表中数据元素的个数。

空表:长度等于零的线性表,记为:L=(  )

非空表记为:L=(a1, a2 , , ai-1, ai , , an)

其中,ai1in)称为数据元素;

下角标 i 表示该元素在线性表中的位置或序号 。

线性表的逻辑结构

线性表的特性

1. 有限性:线性表中数据元素的个数是有穷的。

2. 相同性:本章线性表中数据元素的类型是同一的。

3. 顺序性:线性表中相邻的数据元素ai-1ai之间存在序偶关系(ai-1, ai),即ai-1ai的前驱, aiai-1的后继;a1无前驱,an无后继,其它每个元素有且仅有一个前驱和一个后继。

线性表的存储表示

线性表是一种逻辑结构

线性表的基于数组的存储表示叫做顺序表

线性表的基于指针的存储表示叫做链表(单链表、双链表、循环链表等)

顺序表:线性表的顺序存储结构,用一段地址连续的存储单元,依次存储线性表中的数据元素。

用什么属性来描述顺序表?

存储空间的起始位置

顺序表的容量(最大长度)

顺序表的当前长度(数组的长度大于等于当前线性表的长度 )

 

随机存取:在O(1)时间内存取数据元素

什么时候不能插入?

表满:last>=MaxSize-1

合理的插入位置:1ilast+2i指的是元素的序号)

顺序表的表项的插入insert算法(伪代码)

1. 如果表满了,则抛出上溢异常;

2. 如果元素的插入位置不合理,则抛出位置异常;

3. 将最后一个元素至第i个元素分别向后移动一个位置;

4. 将元素x填入位置i处;

5. 表长加1

算法时间复杂度分析

插入位置          移动元素个数
1                                      n
2                        

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值