圖的儲存和遍歷C++實現
最近在做一些OJ題目時,感覺自己圖的應用還不夠熟練。所以又翻書看別人的部落格複習了一下,現把圖的常用內容總結如下:
圖的常用儲存方法有:鄰接矩陣和鄰接表
遍歷方法有:按深度遍歷(DFS),按廣度遍歷(BFS)
下面的程式碼都是C++寫的,用了一些STL庫的容器:
鄰接矩陣:
#include
<stdio.h>
#include
<stdlib.h>
typedef
structGraph
{
char
vexs[100];
//頂點表
int
arc[100][100];
//鄰接矩陣,可看作邊
int
numVertexes,
numEdges;
//圖中當前的頂點數和邊數
}g;
//定位
int
locates(Graph
*g,
char
ch)
{
int
i
= 0;
for
(i
= 0; i < g->numVertexes; i++)
{
if
(g->vexs[i]
== ch)
{
break
;
}
}
if
(i
>= g->numVertexes)
{
return
-1;
}
return
i;
}
//建立一個無向網圖的鄰接矩陣表示
void
CreateGraph(Graph
*g)
{
int
i,
j, k, w;
printf
(
"輸入頂點數和邊數:\n"
);
scanf
(
"%d,%d"
,
&(g->numVertexes), &(g->numEdges));
for
(i
= 0; i < g->numVertexes; i++)
{
g->vexs[i]
=
getchar
();
while
(g->vexs[i]
==
'\n'
)
{
相關推薦
圖的儲存和遍歷C++實現
最近在做一些OJ題目時,感覺自己圖的應用還不夠熟練。所以又翻書看別人的部落格複習了一下,現把圖的常用內容總結如下:
圖的常用儲存方法有:鄰接矩陣和鄰接表
遍歷方法有:按深度遍歷(DFS),按廣度遍歷(BFS)
下面的程式碼都是C++寫的,用了一些STL庫的容器:
圖的儲存和遍歷
圖的儲存
圖的儲存一般有兩種方式:鄰接矩陣和鄰接表
鄰接矩陣
設圖G(V,E)的頂點標號為0,1,……n-1,則令二維陣列G[n][n]的兩維分別表示圖的頂點標號。
即如果G[i][j]等於1,指頂點i和頂點j之間有邊,如果G[i][j]等於0,指頂
無向圖 廣度優先遍歷 c語言實現
這裡記錄一下無向圖的廣度優先遍歷,無向圖用鄰接表表示,使用的圖的示例圖如下,關於圖的表示可以參照部落格:無向圖的表示:鄰接矩陣和鄰接表,這裡不再贅述,無向圖的表示的程式碼被封裝到標頭檔案queue.h
無向圖 深度優先遍歷 c語言實現
無向圖的深度優先遍歷的實現,無向圖用鄰接表表示無向圖的表示:鄰接矩陣和鄰接表。
程式使用的示例圖為:
實現要點:
每個節點有三種狀態:
-1,還未發現
0,已經發現了,正在處理,還沒有處理
集合巢狀儲存和遍歷元素的示例
1 /**
2 * @Auther: lzy
3 * @Date: 2018/12/12 16:07
4 * @Description: 集合巢狀儲存和遍歷元素的示例
5 */
6 public class ListTest {
7 public static void m
集合中的集合_儲存和遍歷(增強型for迴圈和迭代器)
package GuanQia3_test2_集合中套集合_第一次沒想明白;
/*
* 一個學科中有若干班級,每一個班級又有若干學生。整個學科一個大集合,
* 若干個班級分為每一個小集合(集合巢狀之HashSet巢狀HashSet)。要求如下
* 1、 學生類有兩個屬
Java中ArrayList集合巢狀儲存和遍歷
student類:
package day16_Test;
/*
* 學生類:
* 成員變數:姓名、年齡
* 成員方法
* 構造方法
*
*
PAT 1138 Postorder Traversal(二叉樹的儲存和遍歷)
題意:給出二叉樹的前序和中序遍歷,給出其後序遍歷的第一個元素。
思路:根據前序和中序遍歷的結果得到二叉樹的具體構造,再進行後序遍歷。
程式碼:
#include <cstdio>
#in
二叉樹遍歷c++實現
//自己還真是個菜雞,大一學了一年c++,現在還在基礎的語法上轉圈,還沒有意識到c++真正的
//的強大之處在於它的多變,封裝,等演算法告一段落了在考慮是往Java上走還是深造c++
#include <iostream>
#include <stack&
HashSet的儲存和遍歷
1、特點
1、HashSet實現 Set 介面,由雜湊表(實際上是一個 HashMap 例項)支援。
2、它不保證 set 的迭代順序;特別是它不保證該順序恆久不變。此類允許使用 null 元素
二叉樹非遞迴遍歷c++實現
三種遍歷演算法均採用棧來實現
1.前序遍歷:先訪問根節點,再訪問左子樹,最後訪問右子樹
先將根節點進棧,棧不空時迴圈:{出棧tmp,訪問tmp,若其右子樹節點不空則將tmp的右孩子節點進棧,若其左孩子節點不空則將tmp的左孩子節點進棧。}
2.中序遍歷演算法:左中右
從根節
資料結構之 二叉樹的儲存和遍歷總結
知道前序(包括空結點 下面程式碼用’,’代替)建立一個二叉樹,前序 中序 後序 層序輸出 如何求葉子結點數, 如何求二叉樹深度。
#include<stdio.h>
#include<stdlib.h>
#include<st
二叉樹的深度優先遍歷與廣度優先遍歷 [ C++ 實現 ]
/**
* <!--
* File : binarytree.h
* Author : fancy
* Email : [email protected]
* Date : 2013-02-03
* --!>
*/
#include <stdio.h>
二叉樹遍歷-c實現
bin lib malloc code mage -a oid inf 樹遍歷 這裏主要是三種遍歷,先序(preorder,NLR),中序(Inorder,LNR),後序(Postorder,LRN)
N:node,L:left,R:right
基本排序:先序(NLR,
圖的鄰接表儲存 深度優先遍歷 廣度優先遍歷 C語言實現
ALGraph.h
#pragma once
#include "Queue.h"
/************************************************************************/
/
JS實現圖的建立和遍歷
圖分為無向圖和有向圖
圖的儲存結構有鄰接矩陣、鄰接表、十字連結串列、鄰接多重表這四種,最常用的是前兩種
本篇主要是利用鄰接矩陣實現無向圖的建立和遍歷(深度優先、廣度優先),深度優先其實就是二叉樹裡的前序遍歷
利用鄰接
資料結構作業14—圖的概念 儲存結構和遍歷
2-1若無向圖G =(V,E)中含7個頂點,要保證圖G在任何情況下都是連通的,則需要的邊數最少是: (3分)
A.16
B.21
C.15
D.6
作者: DS課程組 單位: 浙江大學
2-2對於有向圖,其鄰接矩陣表示比鄰接表
資料結構作業14—圖的概念 儲存結構和遍歷(判斷題)
1-1用鄰接矩陣法儲存圖,佔用的儲存空間數只與圖中結點個數有關,而與邊數無關。 (1分)
T
F
作者: DS課程組 單位: 浙江大學
1-2用鄰接表法儲存圖,佔用的儲存空間數只與圖中結點個數有關,而與邊數無關。 (1分)
T
圖的深度優先遍歷和廣度優先遍歷程式碼實現
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <queue>
using nam
C++類實現二叉樹的構建和遍歷
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
/*