日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图的知识点总结-数据结构

發布時間:2024/7/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图的知识点总结-数据结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:圖的基本概念和術語

1.圖之間的關系可以是任意的,任意兩個數據元素之間都可能相關。

2.頂點:數據元素。

3.邊or弧:從一個頂點到另一個頂點的路徑。<V, W>表示弧,(V,W)表示邊,V是弧尾,W是弧頭,此時為有向圖,否則為無向圖。

4.對于無向圖,邊的取值范圍是0到1/2*n*(n-1)。有1/2*n*(n-1)條邊的無向圖為完全圖。對于有向圖,邊的取值范圍0到n*(n-1),n*(n-1)稱做有向完全圖。

5.多條邊的是稠密圖,少邊的是稀疏圖。

6.對于無向圖,頂點V的度是相連的邊數;頂點V的入度是以V為頭的弧數,出度是以V為尾的弧數。

7.連通圖:對于圖中任意頂點都能連通。

8.最小生成樹:極小連通子圖。

二:圖的存儲結構

常見的圖的存儲結構分為:鄰接表、鄰接多重表、十字鏈表。

?

?

?

能方便使用的是鄰接表,下面是其代碼實現:

在鄰接表中對圖中的每一個頂點建立一個單鏈表,每個結點的組成尾三部分,adjvex(指向鄰接點)-nextarc(指向下一結點)-info(頂點信息),加一個頭結點,data(數據域)-firstarc(鄰接點)。

?

?

鄰接表存儲:

#include<string.h>#include<ctype.h>#include<malloc.h> /* malloc()等 */#include<limits.h> /* INT_MAX等 */#include<stdio.h> /* EOF(=^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<io.h> /* eof() */#include<math.h> /* floor(),ceil(),abs() */#include<process.h> /* exit() *//* 函數結果狀態代碼 */#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1typedef int Status; /* Status是函數的類型,其值是函數結果狀態代碼,如OK等 */typedef int Boolean; /* Boolean是布爾類型,其值是TRUE或FALSE */#define MAX_NAME 5 /* 頂點字符串的最大長度 */typedef int InfoType;typedef char VertexType[MAX_NAME]; /* 字符串類型 *//* c7-2.h 圖的鄰接表存儲表示 */#define MAX_VERTEX_NUM 20typedef enum{DG,DN,AG,AN}GraphKind; /* {有向圖,有向網,無向圖,無向網} */typedef struct ArcNode{int adjvex; /* 該弧所指向的頂點的位置 */struct ArcNode *nextarc; /* 指向下一條弧的指針 */InfoType *info; /* 網的權值指針) */}ArcNode; /* 表結點 */typedef struct{VertexType data; /* 頂點信息 */ArcNode *firstarc; /* 第一個表結點的地址,指向第一條依附該頂點的弧的指針 */}VNode,AdjList[MAX_VERTEX_NUM]; /* 頭結點 */typedef struct{AdjList vertices;int vexnum,arcnum; /* 圖的當前頂點數和弧數 */int kind; /* 圖的種類標志 */}ALGraph;

?

三:圖的遍歷

從圖的某一頂點出發訪問圖的其它結點,且只訪問一次,叫圖的遍歷。

1.圖的深度優先遍歷(DFS)

2.圖的廣度優先遍歷(BFS)

?

四:圖的最小生成樹

求最小生成樹算法:普里姆算法、克魯斯卡爾算法。

?

?

五:拓撲排序

簡單的說,就是由某個集合上的偏序求全序。用AOV-網中頂點來表示活動,多應用于求工程能否進行。

?

六:關鍵路徑

?

用到AOE-網中弧表示活動,頂點表示事件,從源點到終點的最長路徑為關鍵路徑。

?

七:最短路徑

?

求單源點到其他頂點的最短路徑:迪杰斯特拉算法。

求每一對頂點的最短路徑:弗洛伊德算法。

?

?

?

總結

以上是生活随笔為你收集整理的图的知识点总结-数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。