软件设计师教程(五)计算机系统知识-数据结构

软件设计师教程

软件设计师教程(一)计算机系统知识-计算机系统基础知识
软件设计师教程(二)计算机系统知识-计算机体系结构
软件设计师教程(三)计算机系统知识-计算机体系结构
软件设计师教程(四)程序设计语言基础知识



线性结构

一种基本的数据结构,就是排排站,一个接一个。

线性表

线性表的定义

除了第一个、最后一个元素,序列中的每个元素均只有一个直接前驱,和一个直接后驱。第一个、最后一个元素都是明确定义好的。

线性表的存储结构

  1. 顺序存储—数组
  2. 链式存储—链表

栈和队列

栈—后进先出
队列—先进先出
就是指定存储的队列,进的口子和出的口子,也只能从这两个口子加元素出元素。

栈只能访问其一端来实现数据存储和检索的线性数据结构,先进后出。

栈的空间容量有限,应用就是表达式求值、括号匹配等,讲递归过程转变为非递归过程的处理。

队列

只允许在一端插入元素,另一端删除元素。先进先出。

队列有两个指针,一个是队头还有一个是队尾。应用就是需要排队的场合,打印队列、离散时间的计算模拟等等。

仅有字符构成的有限序列,线性表。
串衍生出一些匹配算法。

数组、矩阵和广义表

数组

n n n维数组是一种“同构”的数据结构,其每个数据元素类型相同、结构一致。

矩阵

节省存储空间的情况下使矩阵的各种运算能高效地进行。

  1. 特殊矩阵 ⇒ 对称矩阵、三角矩阵和对角矩阵等等
  2. 稀疏矩阵 ⇒ 用三元组表表示 (行号、列号、值)

广义表

0个或多个单元素或子表组成的有限序列。不常用,我觉得用字典可以完美替代

描述客观世界中广泛存在的层次结构关系

树与二叉树的定义

树就是一堆结点的有限集合,除了空树,有且仅有一个称为根的结点,其余结点就可以分为互不相交的有限子集。其中每个有限子集又都是一棵树,称为根结点的子树

二叉树就是每颗子树最多分出两个分支,由于对称性,所以可以做一些递归算法等等。

二叉树的性质与存储结构

二叉树第 i i i ( i ⩾ 1 ) (i\geqslant 1) (i1) 最多有 2 i − 1 2^{i-1} 2i1 个结点
高度为k的二叉树最多有 2 k − 1 2^k-1 2k1结点, ( k ⩾ 1 ) (k\geqslant 1) (k1)

可以用三叉链表或二叉链表来存储二叉树,链表的头指针指向二叉树的根结点。

二叉树的遍历

先序、中序、后序,还有层序遍历

线索二叉树

每个结点多了前驱、后继。将先、中、后的遍历顺序固定下来了。

最优二叉树

哈夫曼树 所有叶子结点的带权路径长度之和最小的树。

构造算法是用全值最小的两个结点合成一个新的结点,这样不断地递归就好了。

树和森林

树的存储有双亲表示法、孩子表示法和孩子兄弟表示法。

C 图 邻接表的基本操作

九大内部排序汇总

posted @ 2023-02-02 11:29  赫凯  阅读(19)  评论(0编辑  收藏  举报