一、栈区(程序运行中的系统栈)
1.进程空间区域
2.栈区 : 局部变量、函数调用关系,函数的形参和返回值;
(1)栈区中保存的数据先进后出(first in last out);
二、数据结构中的栈区(顺序栈,链式栈)
1.先进后出,后进先出(FILO)
2.只允许从一端进行数据的插入和删除的线性的存储结构;
3.顺序栈:满增栈,满减栈,空增栈,空减栈;
(1)满栈,空栈:栈顶位置是否存有元素;
(2)增栈、减栈:栈的增长方向;
4.链式栈:
三、队列(队尾入队,队头出队)
1.先进先出,后进后出(FIFO)
2.允许从一端插入数据,从另一端删除数据的线性的存储结构;
3.顺序队列
(1)可能会出现假溢出,一般用循环顺序队列;
4.链式队列
(1)
四、线程邮箱(线程间通信)
五、树(根,分支节点,叶子节点(终端))
1.树的深度:层数;
2.树的广度(度):最大节点的度; 节点的度:后继节点的个数;
3.二叉树:是一种数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。
4.满二叉树:是一种特殊的二叉树,其中每个节点都有两个子节点,且所有叶子节点都在同一层上。满二叉树的每一层都被完全填满。
(1)第K层的节点个数:2^(k-1);
(2)前K层节点个数:2^k - 1;
5.完全二叉树:,其中每一层都被完全填满,除了最后一层,最后一层的节点从左到右填充。完全二叉树的所有节点都尽可能地靠左。
(1)如果完全二叉树的节点总数为 n,则叶子节点的数量 L可以通过以下公式计算:
如果 n是偶数,叶子节点的数量为 n/2。如果 n 是奇数,叶子节点的数量为 n+1/2。
6.遍利
(1)前序遍利:根 ->左子树->右子树 ---------- 深度优先
(2)中序遍历:左子树->根->右子树 ---------- 深度优先
(3)后序遍历:左子树->右子树->根 ---------- 深度优先
(4)层序遍历:从上至下,从左往右,逐层遍历--------广度优先
(5)已知中序 + 前序/后续 可确定唯一的二叉树