数据结构——三

来源:互联网 发布:淘宝清库存 编辑:程序博客网 时间:2024/05/16 11:20

前言

  数据结构第三章,主要讲解的内容是栈、队列和数组,看着挺少的,但是内容可不少,下面我们就来一起看看第三章到底在讲什么,请看导图:
栈,队列和数组

概念

  首先,我们需要明白什么是栈,本书解释为“运算受限的线性表,这种表上的插入和删除运算限定在表的某一端进行。”
  栈,包含有几个特定名词,分别为栈顶,栈底和空栈,含义可以从字面理解,允许进行插入和删除的一端称为栈顶,另一端称为栈底。不含任何数据元素的栈称为空栈。

栈的实现

  顺序实现
  栈的书序存储结构是用一组连续的存储单单元依次存放栈中的每个元素,并用始端作为栈底。栈的顺序实现称为顺序栈。通常用一个一维数组和一个记录栈顶位置的变量来实现栈的顺序存储。
  链接实现
  栈的链接实现称为链栈,链栈可以用带头节点的单链表来实现,链表包含有头结点,首节点和尾结点;头结点为空节点;首节点为栈顶结点;尾结点为栈底结点。各结点通过链域的链接组成栈,由于每个结点空间都是动态分配的产生,所以链栈不用预先考虑容量的大小。
  递归实现
  首先要明白递归的概念,递归:如果在一个函数或者数据结构的定义中又应用了它自身(作为定义项之一),那么这个函数或者数据结构称为是递归定义的,简称递归。
  递归定义不能是“循环定义“。因为要求任何递归定义必须同时满足如下条件:
  (1) 被定义项在定义中的应用(即作为定义项的出现)具有更小的”规模“
  (2)被定义项在最小”规模“上的定义是非递归的,这是递归结束的条件。

队列

概念

  队列是有限个同类型数据元素的线性序列,是一种现金先出的线性表,新加入的数据元素插在队列尾端,出队列的数据元素在队列首部被删除。排队的规则是不允许”插队“,新加入的成员只能排在队列尾,而且队列中全体成员只能按如队列的顺序离开队列。

顺序实现

  顺序存储实现的队列称为顺序队列,它由一个一维数组(用于存储队列中元素)及两个分别指示队列首和队列尾元素的变量组成,这两个变量分别称为”队列首指针“和”队列尾指针”。需要注意的是,队列的顺序实现时有可能会出现”假溢出“,具体内容还是从课本中比较容易理解,小编在此就不赘述了。

链接实现

  队列的链接实现实际上是一个使用了一个带有头结点的单链表来表示队列,称为链队列。头指针指向链表的头结点,单链表的头结点的next域指向队列首结点,尾指针指向队列尾结点,即单链表的最后一个结点。

数组

概念

  数组可以堪称是线性表的一种推广,一维数组又称为向量,它是由一组具有相同类型的数据元素组成的,并存储在一组连续的存储单元中。若一维数组中的数据元素又是一维数组结构,则称为二维数组;依次类推,若一维数组中的元素又是一个二维数组结构,则称为三维数组。一般的,一个n维数组可以看成元素为n-1维数组的线性表。

数组的存储结构

  一维数组元素的内存地址是连续的,二维数组可以有两种存储方法:一种是以列序为主序的存储;另一种是以行序为主序的存储。

矩阵的压缩存储

  矩阵分为特殊矩阵稀疏矩阵两种,特殊矩阵主要为对称矩阵和三角矩阵,由于小编对矩阵的学习不到位,所以在此就不误导大家了,具体的可以去课本或者百度再了解了解。
      本文为小编在学习数据结构导论时的学习内容,如有不妥,请指出。

原创粉丝点击