数据结构基础

数据结构是解决复杂数据存储的关键,包括线性表(顺序表、链表、栈和队列)、树结构和图存储结构。线性表中的顺序表和链表各有特点,栈遵循“后进先出”,队列则是“先进先出”。树结构适合“一对多”关系,图结构适合“多对多”关系。衡量算法好坏的标准包括时间复杂度和空间复杂度,时间复杂度通过大O记法表示,如O(n)、O(n^2)等,空间复杂度则反映程序运行时临时存储空间的需求变化。
摘要由CSDN通过智能技术生成

目录

数据结构是什么?

线性表

顺序表和链表

栈和队列 

树结构

图存储结构

如何衡量一个算法的好坏

时间复杂度

空间复杂度


数据结构是什么?

简单来说,数据结构用于解决如何存储具有复杂关系的数据且更有助于后期对数据的再利用的问题,也就是解决数据的存储方式。

常用的数据结构:

  • 线性表,还可细分为顺序表、链表、栈和队列;
  • 树结构,包括普通树,二叉树,线索二叉树等;
  • 图存储结构;

线性表

将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(简称线性表)。

使用线性表存储的数据,如同向数组中存储数据那样,要求数据类型必须一致,也就是说,线性表存储的数据,要么全部都是整形,要么全部都是字符串。一半是整形,另一半是字符串的一组数据无法使用线性表存储。

另外,对于具有“一对一”逻辑关系的数据,我们一直在用“某一元素的左侧(前边)或右侧(后边)”这样不专业的词,其实线性表中有更准确的术语:

  • 某一元素的左侧相邻元素称为“直接前驱”,位于此元素左侧的所有元素都统称为“前驱元素”;
  • 某一元素的右侧相邻元素称为“直接后继”,位于此元素右侧的所有元素都统称为“后继元素”;

图 1 数据中的元素 3 来说,它的直接前驱是 2 ,此元素的前驱元素有 2 个,分别是 1 和 2;同理,此元素的直接后继是 4 ,后继元素也有 2 个,分别是 4 和 5。如下图所示:

线性表并不是一种具体的存储结构,它包含顺序存储结构和链式存储结构,是顺序表和链表的统称。

顺序表和链表

顺序表:将数据依次存储在连续的整块物理空间中(如图3a) 

链表:数据分散的存储在物理空间中,通过一根线保存着它们之间的逻辑关系(如图3b)

使用顺序表(底层实现靠数组)时,需要提前申请一定大小的存储空间,这块存储空间的物理地址是连续的。链表则完全不同,使用链表存储数据时,是随用随申请,因此数据的存储位置是相互分离的,换句话说,数据的存储位置是随机的。为了给各个数据块建立“依次排列”的关系,链表给各数据块增设一个指针,每个数据块的指针都指向下一个数据块(最后一个数据块的指针指向 NULL),就如同一个个小学生都伸手去拉住下一个小学生的手,这样,看似毫无关系的数据块就建立了“依次排列”的关系,也就形成了链表。如下图所示:

栈和队列 

栈和队列隶属于线性表,是特殊的线性表,因为它们对线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值