- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构—图.
一、定义与术语
图:无序数据结构
基本构成:1.边集(Edge):a. 有向图,有向边v, w,弧,弧头,弧尾,权值
b. 无向图,无向边(v, w),权值
2.顶点集(Vertices):a. 无向图:度(TD(v))
b. 有向图:出度(ID(v)),入度(OD(v)),度(TD(v) = ID(v) + OD(v))
无向完全图:n个顶点,条边
有向完全图:n个顶点,条边
网:带权图
连通分量:无向图中的极大连通子图(多个),无向完全图的连通分量就是本身(一个)
强连通分量:有向图中的极大连通子图,其中到以及到都有路径
生成树:图的极小连通子图,含有图的全部n个顶点,只有n-1条边,少一条则不能连通,多一条则形成回路
生成森林:不完全图中的各个连通分量的生成树,构成图的生成森林
二、存储结构
顶点:可采用链表或数组存储顶点列表,一般采用链表存储
边:1. 邻接矩阵(数组)
a. 无向图:对称阵,可采用矩阵压缩存储方式。A[i][j] = 0表示和没有连接;A[i][j] = 1表示和有边连接;第i行的和表示顶点的度
b. 有向图:不对称阵。表示顶点到的有向弧的权值;表示表示顶点到没有弧连接或者i = j
2. 邻接表(链表,有向无向都可用)
边结点:adjvex(邻接点),nextarc(下一条边),info(权值)
顶点结点:data(顶点数据),firstarc(第一条边)
3. 十字链表(Othogonal List)
弧结点:tailvex(弧尾结点),headvex(弧头结点),tlink(弧尾相同的下一条弧),hlink(弧头相同的下一条弧),info(权值)
顶点结点:data(顶点数据),firstin(第一条入弧),firstout(第一条出弧)
三、图的遍历(每个顶点只被访问一次)
1. 深度优先遍历(类似树的先根遍历)
基本思想:假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可从图中某个顶点v出发,访问此结点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问(非连通图),则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
代码:
void DFS(Graph G, int v, bool first, bool visited[]) {
visit(getValue(G, v));
visited[v] = true;
int = getFirstNeighbor(G, v);
while(w != -1) {
if(!visited[w]) DFS(G, w, visited);
w = getNextNeighbor(G, v, w);
}
}
2. 广度优先搜索(类似于树的层次遍历)
基本思想:假设从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直至图中所有已被访问的顶点的邻接点都被访问到。若此时图中尚有顶点未被访问(非连通图),则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
代码:
viod BFS(Graph G, int v) {
int i, w, n = G.vexnum;
bool* visited = new bool[n];
for(i = 0; i n; i++) visited[i] = false;
visit(getValue(G, v));
visited[v] = true;
Queue Q; initQueue(Q); enQueue(Q, v);
while (!isEmpty(Q)) {
deQueue(Q, v);
w = getFirstNeighbor(G, v);
while (w != -1) {
if (!visited[w]) {
visit(getValue(G, w));
enQueue(Q, w);
}
w = getNextNeighbor(G, v, w);
}
}
delete[] visited;
}
四、图的连通性问题(无向图)
1. 深度优先生成树(深度优先搜索形成),广度优先生成树(广度优先搜索形成)
深度优先生成森林算法:
void DFSForest(Graph G, CSTree
您可能关注的文档
最近下载
- 4郭永康光的干涉-14.ppt VIP
- 中职教育一年级上学期英语《We Are Friends》课件.pptx
- 4郭永康光的干涉-11.ppt VIP
- 《危险化学品目录(2015版)》(2022年调整)-标注为爆炸物的化学品.pdf VIP
- 湘南学院2021-2022学年第2学期《高等数学(下)》期末试卷(B卷)附标准答案.pdf
- 人美版小学四年级上册美术教案.pdf VIP
- 人教PEP版五年级上册英语Unit 2 My week单元整体教学设计(教案).docx VIP
- 4郭永康 光干涉-7 .ppt VIP
- 小学语文新部编版一年级上册全册教案(2025秋新版).doc
- 湘南学院2022-2023学年第2学期《高等数学(下)》期末试卷(B卷)附标准答案.pdf
文档评论(0)