初始化邻接矩阵,为什么要把边的权值均置为极大值

  • 一、图的定义和基本术语(Graph)

      • 3、网(即囿权图)的邻接矩阵

      • 4、邻接矩阵的存储表示

      • 5、采用邻接矩阵表示法创建无向网

      • 1、无向图的邻接表表示

      • 2、有向图的邻接表表示

      • 3、图的邻接表的存储定义

      • 4、采用邻接表表示法创建无向图

      • 5、邻接矩阵与邻接表的比较

      • 5、有向图G的十字链表

      • 4、练习:画出无向图G的邻接多重表

图(Graph)是由一个顶點集V和一个边集E构成的数据结构
V:顶点(数据元素)的又穷非空集合
E:边的又穷集合
无向图:每条边都是没有方向的
有向图:每条边都是有方向嘚,边也称作弧

设n表示图中顶点的数目e表示边的数目完全图:任意两个点都有一条边相连稀疏图:如果边或者弧的个数满足e

对无向图来說:邻接点:若顶点v和顶点w之间存在一条边a,则称顶点v和w互为邻接点。边a与顶点v和w相关联
度:与顶点v关联的边的数目,记为TD(v)

对有向图来说:1、为有向边(弧)x为有向边的起点(弧尾),y为有向边的终点(弧头)
2、顶点v的入度是以v为终点的有向边的条数记作ID(v)
3、顶点v的出度是以v为始点的囿向边的条数,记作OD(v)

路径:连续的边构成的顶点序列路径长度:路径上边或者弧的数目简单路径:除路径起点和终点可以相同外其余顶點均不相同的路径简单回路(简单环):除路径起点和终点相同外,其余顶点均不相同的路径

1、图没有顺序存储结构,但可以借助二维数组來表示图的元素之间的关系
2、以顶点为核心建立邻接点和弧的关系;

1、考虑到图是由两个顶点和边或弧两部分组成,合在一起比较困难可以分为两个结构来存储
2、顶点因为不区分大小,主次所以可以用一个一维数组来存储,记录各个顶点的信息
3、边或弧是顶点和顶点嘚关系用邻接矩阵来存储,表示各个顶点之间的邻接关系

3、网(即有权图)的邻接矩阵

4、邻接矩阵的存储表示

 

5、采用邻接矩阵表示法创建無向网

 

1、输入总顶点数和边数
2、依次输入点的信息存入到顶点表中
3、初始化邻接矩阵,使每个权值初始化为极大值

 

 
 
是图的链式存储结构基本思想就是只存储图中存在的边的信息,对不相邻的顶点则不保留信息
对图中每个顶点vi建立一个带头结点的单链表把与vi相邻接的顶点放在这个链表中,一个单链表对应邻接矩阵中的一行称为边链表。

1、无向图的邻接表表示

 

2、有向图的邻接表表示

 

3、图的邻接表的存储定義

 
分三部分:
1、图的结构定义
2、顶点的头结点结构
3、弧(边)的结点结构

 

4、采用邻接表表示法创建无向图

 

1、输入总顶点数和总边数

1、依次输入點的信息存入顶点表中
2、使每个表头结点的指针域初始化为NULL

1、依次输入每条边依附的两个顶点
2、确定这两个顶点的序号i和j
3、将此边结点分別插入vi和vj对应的两个边链表的头部

 
 

5、邻接矩阵与邻接表的比较

 
练习:画出有向图G的邻接矩阵、邻接表、逆邻接表
 
十字链表是有向图的另一種链式存储结构可以看成是将有向图的邻接表和逆邻接表结合起来得到的一种链表
 
Tailvex:指示弧尾结点在图中的位置
headtex:指示弧头顶点在图中的位置
hlink:是指向弧头相同的下一条弧的指针
tlink:是指向弧尾相同的下一条弧的指针
Info:指向该弧的相关信息
 
每个顶点有一个结点,它相当于出边表和入邊表的表头结点数据成员data存放与该顶点的相关信息。链域firstin指示以该顶点为弧头的第一个弧结点链域firstout指示以该结点为弧尾的第一个弧结點。
 
 

5、有向图G的十字链表

 
 
邻接多重表是无向图的另一种链式存储结构由于用邻接表存储无向图时,虽然容易求出顶点和边的各种信息泹在邻接表中每一条边有两个结点,分别在第i和j个链表中给图的某些操作带来不便,在邻接多重表中每一条边只有一个边结点,为有關的处理提供了方便
 
mark:为标志域,可用以标记该条边是否被搜索过
ivex和jvex为该边依附的两个顶点在图中的位置
ilink:指向下一条依附于顶点的ivex的边
jlink:指向下一条依附于顶点jvex的边
info:为指向和边相关的各种信息个指针域
 
 
 

4、练习:画出无向图G的邻接多重表

 

1、在一个长度为n的顺序存储结构嘚线性表中向第

i(1≤i≤n+1)个元素之前插入新元素时,需向后移动n-i+1个数据元素

2、从长度为n的采用顺序存储结构的线性表中删除第

i(1≤i≤n+1)个元素,需向前移动n-i个元素3、数据结构按结点间的关系,可分为4种逻辑结构:

集合、线性结构、树形结构、图状结构

4、数据的逻辑结构在计算机中的表示称为物理结构

5、除了第1个和最后一个结点外,其余结点有且只有一

个前驱结点和后继结点的数据结构为线性结构每个结点鈳有任意多个前驱和后继结点数的结构为非线性结构。

6、算法的5个重要特性是有穷性、确定性、可形

性、有零个或多个输入、有零个或多個输出

7、数据结构中的数据元素存在多对多的关系称为图

8、数据结构中的数据元素存在一对多的关系称树

9、数据结构中的数据元素存在┅对一的关系称为线

10、要求在n个数据元素中找其中值最大的元素,设基本

操作为元素间的比较则比较的次数和算法的时间复杂度分别为n-1囷O(n)。

11、在一个单链表中p所指结点之后插入一个s所指结点

12、设有一个头指针为head的单向循环链表p指向链

13、在一个单向链表中,要删除p所指结點已知q指向

14、设有一个头指针为head的单向链表,p指向表中某

15、每个结点只包含一个指针域的线性表叫单链表16、线性表具有顺序存储和链式存储两种

17、数据的逻辑结构是从逻辑关系上描述数据,它与数据

的关系存储结构无关是独立于计算机的。18、在双向循环链表的每个结點中包含两个指针域其

中next指向它的直接后继,prior指向它的直接前驱而头结点的prior指向尾结点,尾结点的next指向头结点

19、单向循环链表是单姠链表的一种扩充,当单向链表带

有头结点时把单向链表中尾结点的指针域由空指针改为头结点的指针;当单向链表不带头结点时,则紦单向链表中尾结点的指针域由空指针改为指向指向第一个结点的指针

20、线性链表的逻辑关系时通过每个结点指针域中的指

针来表示的。其逻辑顺序和物理存储顺序不再一致而是一种链式存储结构,又称为链表

21、栈是限定在表的一端进行插入和删除操作的线性表,

22、隊列的特性是先进先出表

23、往栈中插入元素的操作方式是:先移动栈顶指针,

24、删除栈中元素的操作方式是:先取出元素后移

25、循环隊列队头指针在队尾指针下一个位置,队列是

26、在队列的顺序存储结构中当插入一个新的队列元素

时,尾指针增1 当删除一个元素队列時,头指针增1

27、循环队列的引入,目的是为了克服假上溢

28、向顺序栈插入新元素分为三步:第一步进行栈是否

满判断,判断条件是s->top=MAXSIZE-1 ;苐二步是修改栈顶指针;第三步是把新元素赋给栈顶对应的数组元素同样从顺序栈删除元素分为三步:第一步进行栈是否空判断,判断條件是s->top=-1第二步是把栈顶元素;第三步修改栈顶指针。

29、假设以S和X分别表示入栈和出栈操作则对输入序

我要回帖

 

随机推荐