一般来说,用计算机解决一个具体问题时,大致需要经过下列几个步骤:
1️⃣ 首先要从具体问题抽象出一个适当的数学模型
2️⃣ 然后设计一个解决此数学模型的算法
3️⃣ 最后编出程序,进行测试、调整 直至得到最终解答
自然语言 ——> 抽象数学模型 ——> 程序语言 ——> 运算
线性表的顺序表示指的是 用一组地址连续的存储单元 依次存储线性表的数据元素。
线性表中任一数据元素都可以 随机存取 ,所以 线性表的顺序存储结构是一种随机存取的存储结构。
n 个结点链接成一个链表,即为线性表的链式存储结构。
由于此链表的每一个结点中只包含一个指针域,故又称 线性链表 或 单链表
在 单链表 中,取得第 i 个数据元素必须从头指针出发寻找,因此 单链表是一种非随机存取的存储结构。
循环链表(Circular Linked List) 是另一种形式的链式存储结构。它的特点是表中最后一个结点的指正域指向头结点整个链表形成一个环
循环链表中任一结点出发均可找到表中其他结点。
双向链表(Double Linked List) 的结点有两个指针域,其一指向直接后继,另一指向直接前驱。
双向链表特点就是更方便找前驱结点。
栈和队列也是线性表, 其特殊性在于栈和队列的基本操作是线性表的子集,他们是操作受限的线性表。
图: G = ( V , E ) G = (V,E) G=(V,E)
无向图:每条边都是无方向的
有向图:每条边都是有方向的
完全图:任意两个点都有一条边相连
稀疏图: 有很少边或弧的图
稠密图:有较多边或弧的图
网:边、弧带权的图
邻接:有边、弧相连的两个顶点之间的关系
关联(依附):边、弧与顶点之间的关系
顶点的度:与该顶点相关联的边的数目,记为 T D ( v ) TD_{(v)} TD(v)
在 有向图 中,顶点的度等于该顶点的 入度 与 出度 之和
顶点 V 的入度 是以 V 为 终点 的有向边的条数,记作 I D ( v ) ID_{(v)} ID(v)
顶点 V 的出度 是以 V 为 始点 的有向边的条数,记作 O D ( v ) OD_{(v)} OD(v)
路径:接续的边构成的顶点序列。
路径长度:路径上边或弧的数目 / 权值之和。
回路(环):第一个顶点和最后一个顶点相同的路径。
简单路径:除路径起点和终点可以相同外,其余顶点均不相同的路径。
简单回路(简单环):除路径起点和终点相同外,其余顶点均不相同的路径。
连通图(强连通图)
在无(有)向图 G = ( V , E ) G=( V, {E} ) G=(V,E) 中,若对任何两个顶点 v、u 都存在从 v 到 u 的路径,
则称 G 是 连通图(强连通图)。
权与网
子图
设有两个图 G = ( V , { E } ) G= (V, \{E\}) G=(V,{E})、 G 1 = ( V 1 , { E 1 } ) G_1= (V1, \{E_1\}) G1=(V1,{E1}),若 V 1 ⊆ V , E 1 ⊆ E V_1 \subseteq V, E_1 \subseteq E V1⊆V,E1⊆E,则称 G 1 G_1 G1 是 G G G 的 子图。
连通分量(强连通分量)
有向图 G 的 极大强连通子图 称为 G 的 强连通分量。
极大强连通子图意思是:
该子图是 G 的强连通子图,将 D 的任何不在该子图中的顶点加入,子图不再是强连通的。
极小连通子图:该子图是 G 的连通子图,在该子图中删除任何一条边,子图不再连通。
生成树:包含无向图 G 所有顶点的极小连通子图。
生成森林:对非连通图,由各个连通分量的生成树的集合。
✍ 码字不易,记得点赞 收藏 ⭐️