主要代碼如下:? ? #include
? ? using namespace std;
? ? const int MAX_EDGE = 100;
? ? const int MAX_NODE = 100;
? ? /*
? ? 定義一條邊
? ? */
? ? typedef struct{
? ? int v;
? ? int t;
? ? int weight;
? ? bool isMST;
? ? }Edge;
? ? /*
? ? 有關(guān)算法的一些變量
? ? */
? ? Edge edges[MAX_EDGE];
? ? int nodeSet[MAX_EDGE];
? ? const int MSTSetNum = -1;
? ? int edgeNum;
? ? bool nodeIsMST[MAX_NODE];
? ? int Exchange(Edge *a,Edge *b)
? ? {
? ? Edge t;
? ? t = *a;
? ? *a = *b;
? ? *b = t;
? ? return 0;
? ? }
? ? /*
? ? 實(shí)現(xiàn)快速排序算法quick_sort
? ? */
? ? int partition(Edge*edges,int p,int r)
? ? {
? ? int i = p-1,j = p;
? ? for(;j
? ? {
? ? if(edges[j].weight <= edges[r].weight)
? ? {
? ? i++;
? ? exchange(edges+i,edges+j);
? ? }
? ? }
? ? exchange(&edges[i+1],&edges[r]);
? ? return i+1;
? ? }
? ? int quick_sort(Edge edges[],int p,int r)
? ? {
? ? if(p < r)
? ? {
? ? int q = partition(edges,p,r);
? ? quick_sort(edges,p,q-1);
? ? quick_sort(edges,q+1,r);
? ? }
? ? return 0;
? ? }
? ? void Initialize(int nodeSet[],int edgeNum);
? ? void MST_Kruskal(int n);
? ? void test();
? ? int main()
? ? {
? ? test();
? ? return 0;
? ? }
? ? void Initialize(int nodeSet[],int n)
? ? {
? ? if(edgeNum > MAX_EDGE)
? ? {
? ? printf("The total num of edges must be less than %d\n",MAX_EDGE);
? ? exit(EXIT_FAILURE);
? ? }
? ? else
? ? {
? ? int i = 0;
? ? edgeNum = n;
? ? for(;i
? ? {
? ? nodeSet[i] = i;
? ? }
? ? }
? ? }
? ? void MST_Kruskal(int n)
? ? {
? ? Initialize(nodeSet,n);
? ? quick_sort(edges,0,edgeNum-1);
? ? int i;
? ? for(i = 0;i
? ? {
? ? if(nodeSet[edges[i].v]!=nodeSet[edges[i].t])
? ? {
? ? edges[i].isMST = true;
? ? if(i==7)
? ? i = i;
? ? if(nodeIsMST[edges[i].v] || nodeIsMST[edges[i].t])
? ? {
? ? int j;
? ? for(j = 0;j<=i;j++)
? ? {
? ? if(edges[j].isMST)
? ? {
? ? if(edges[j].v == edges[i].v ||
? ? edges[j].t == edges[i].v||
? ? edges[j].v == edges[i].t||
? ? edges[j].t == edges[i].t)
? ? nodeSet[edges[j].v] = nodeSet[edges[j].t] = MSTSetNum;
? ? }
? ? }
? ? nodeIsMST[edges[i].v] = nodeIsMST[edges[i].t] = true;
? ? }
? ? else
? ? {
? ? nodeSet[edges[i].v] = nodeSet[edges[i].t];
? ? nodeIsMST[edges[i].v] = nodeIsMST[edges[i].t] = true;
? ? }
? ? }
? ? }
? ? }
? ? /*
? ? 測試函數(shù)
? ? */
? ? void test()
? ? {
? ? edges[0].v = 0,edges[0].t = 1,edges[0].isMST = false,edges[0].weight = 4;
? ? edges[1].v = 0,edges[1].t = 8,edges[1].isMST = false,edges[1].weight = 8;
? ? edges[2].v = 1,edges[2].t = 2,edges[2].isMST = false,edges[2].weight = 8;
? ? edges[3].v = 1,edges[3].t = 7,edges[3].isMST = false,edges[3].weight = 11;
? ? edges[4].v = 2,edges[4].t = 8,edges[4].isMST = false,edges[4].weight = 2;
? ? edges[5].v = 2,edges[5].t = 5,edges[5].isMST = false,edges[5].weight = 4;
? ? edges[6].v = 2,edges[6].t = 3,edges[6].isMST = false,edges[6].weight = 7;
? ? edges[7].v = 3,edges[7].t = 4,edges[7].isMST = false,edges[7].weight = 9;
? ? edges[8].v = 3,edges[8].t = 5,edges[8].isMST = false,edges[8].weight = 14;
? ? edges[9].v = 4,edges[9].t = 5,edges[9].isMST = false,edges[9].weight = 10;
? ? edges[10].v = 5,edges[10].t = 6,edges[10].isMST = false,edges[10].weight = 2;
? ? edges[11].v = 6,edges[11].t = 7,edges[11].isMST = false,edges[11].weight = 1;
? ? edges[12].v = 6,edges[12].t = 8,edges[12].isMST = false,edges[12].weight = 6;
? ? edges[13].v = 7,edges[13].t = 8,edges[13].isMST = false,edges[13].weight = 7;
? ? MST_Kruskal(14);
? ? int i,j;
? ? for(i = 0,j = 0;i<14;i++)
? ? {
? ? if(edges[i].isMST)
? ? {
? ? printf("%d. (%d,%d)-------%d\n",j+1,edges[i].v,edges[i].t,edges[i].weight);
? ? j++;
? ? }
? ? }
? ? }
C++的CIN和COUT操作符的方法
?
- C++(72817)
- CIN(11748)
- COUT(7812)
- 操作符(8987)
相關(guān)推薦
MATLAB操作符和特殊字符
MATLAB操作符和特殊字符* 矩陣乘法 .* 數(shù)組乘法 ^ 矩陣冪 .^ 數(shù)組冪 \ 左除或反斜杠 / 右除或斜杠 ./ 數(shù)組除 Kron Kronecker張量積 .. 父目錄 … 繼續(xù)
2009-09-22 16:05:17
關(guān)于右值引用的一點(diǎn)理解
我們知道對于一些C++內(nèi)建類型來說,ostream類的操作符<<都提供了輸出到標(biāo)準(zhǔn)輸出流的方法,只需要像下面這樣就能輸出到終端窗口了。
2023-07-21 17:38:14179
Linux命令中“!”操作符的用法
Linux中的'!'符號或操作符可以用作邏輯否定運(yùn)算符,也可以用于在歷史記錄中獲取命令并進(jìn)行修改或運(yùn)行以前執(zhí)行過的命令。
2023-07-05 10:07:151003
DC-DC的輸入電容Cin和輸出電容Cout計(jì)算選型
實(shí)際上DC-DC的輸入電容Cin和輸出電容Cout是特別關(guān)鍵的器件,在負(fù)載波動大影響Vin時(shí),Cin不僅可以輔助Vin提供電流,縮短Vin的響應(yīng)時(shí)間,還可以穩(wěn)定輸入電壓Vin。而Cout更為關(guān)鍵。
2023-07-01 12:53:45502
如何計(jì)算DC-DC的輸入電容Cin與輸出電容Cout
引言:實(shí)際上DC-DC的輸入電容Cin和輸出電容Cout是特別關(guān)鍵的器件,在負(fù)載波動大影響Vin時(shí),Cin不僅可以輔助Vin提供電流,縮短Vin的響應(yīng)時(shí)間,還可以穩(wěn)定輸入電壓Vin。而Cout更為
2023-06-15 15:14:06775
new和malloc函數(shù)詳細(xì)分析底層邏輯
new操作符從自由存儲區(qū)(free store)上為對象動態(tài)分配內(nèi)存空間,而malloc函數(shù)從堆上動態(tài)分配內(nèi)存。自由存儲區(qū)是C++基于new操作符的一個(gè)抽象概念,凡是通過new操作符進(jìn)行內(nèi)存申請,該
2023-04-03 09:29:01280
C++入門之表達(dá)式
C++中提供了很多操作符且定義了什么時(shí)候可以用于操作基本類型,其還允許我們定義用于操作class類型的操作符,接下來幾篇文章將會介紹C++中用于基本類型的操作符,與此同時(shí)也會介紹一些庫中操作符。一個(gè)
2023-03-17 13:55:04249
C語言的表達(dá)式
在C語言中,表達(dá)式是由操作符和操作數(shù)組成。表達(dá)式可以由一個(gè)或者多個(gè)操作數(shù)組成,不同的操作符與操作數(shù)組成不同的表達(dá)式,因此,表達(dá)式才是C語言的基本。
2023-02-21 15:09:23586
Linux內(nèi)核中C語法擴(kuò)展-語句表達(dá)式
表達(dá)式和語句是 C 語言中的基礎(chǔ)概念。什么是表達(dá)式呢?表達(dá)式就是由一系列操作符和操作數(shù)構(gòu)成的式子。操作符可以是 C 語言標(biāo)準(zhǔn)規(guī)定的各種算術(shù)運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、比較運(yùn)算符等。
2023-02-17 09:30:432138
STM32中比較常見的C語言基礎(chǔ)知識介紹
在不改變其他位的值的狀況下,對某幾個(gè)位進(jìn)行設(shè)值。這個(gè)場景在單片機(jī)開發(fā)中經(jīng)常使用,方法就是我們先對需要設(shè)置的位用&操作符進(jìn)行清零操作,然后用 | 操作符設(shè)值。
2023-02-05 11:50:55350
STM32中較為常見的C語言基礎(chǔ)知識
C語言是單片機(jī)開發(fā)中的必備基礎(chǔ)知識,本文列舉了部分 STM32 學(xué)習(xí)中比較常見的一些C語言基礎(chǔ)知識。 1位操作 下面我們先講解幾種位操作符,然后講解位操作使用技巧。C語言支持以下六種位操作: 下面
2023-02-03 01:21:101220
C++小白自學(xué)基礎(chǔ)教程之友元函數(shù)實(shí)現(xiàn)操作符重載知識總結(jié)16
編程語言C++語言
電子學(xué)習(xí)發(fā)布于 2023-01-13 09:57:26
STM32學(xué)習(xí)中常見的一些C語言基礎(chǔ)知識
這個(gè)場景在單片機(jī)開發(fā)中經(jīng)常使用,方法就是我們先對需要設(shè)置的位用&操作符進(jìn)行清零操作,然后用 | 操作符設(shè)值。
2023-01-11 12:03:54232
C++入坑指南
C++最主要的用途是開發(fā)基礎(chǔ)軟件設(shè)施,和在有限資源的條件上運(yùn)行的應(yīng)用程序。因?yàn)樗幸环N獨(dú)特的能力,可以直接操作它所運(yùn)行的硬件或者機(jī)器,即使在硬件空間資源受限的情況下,C++程序依舊可以高效的運(yùn)行,所以在這種條件下,C++幾乎是完美的選擇。
2023-01-04 15:56:24268
C++中前置操作性能一定優(yōu)于后置操作?
自入行以來,無論是查閱資料、技術(shù)博客亦或是同事間的技術(shù)交流,都有一個(gè)共識:在循環(huán)的時(shí)候,務(wù)必使用前置操作符,因?yàn)槠湫阅軆?yōu)于后置操作符,久而久之,這個(gè)就像一個(gè)不成文的規(guī)定,大家都在遵循,久而久之,成為潛移默化的編碼習(xí)慣。而使得大家持有這個(gè)觀點(diǎn)的原因就是后置操作會產(chǎn)生臨時(shí)變量,而后置操作則不會。
2022-11-17 11:58:40270
C語言位操作
目錄前言一、位操作符及其常用方式二、實(shí)例應(yīng)用解析(嵌入式筆試??迹┣把? 位操作在單片機(jī)的C語言開發(fā)中經(jīng)常會用到,該操作主要用于讀寫寄存器,這篇文章將會對其的常用方法進(jìn)行簡要概述。一、位操作符及其
2021-12-22 19:09:5512
嵌入式C語言常用知識點(diǎn)
導(dǎo)讀C 語言是單片機(jī)開發(fā)中的必備基礎(chǔ)知識。我們這里就列舉部分STM32學(xué)習(xí)中會遇見的C 語言基礎(chǔ)知識點(diǎn)1.位操作下面我們先講解幾種位操作符,然后講解位操作使用技巧。C語言支持如下6中位操作:(圖1
2021-11-29 17:06:055
C++輸入和輸出的真實(shí)面目
C++輸入和輸出 在C++里std::cin、std::cout、std::cerr和std::endl分別是標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤輸出和刷新緩沖區(qū)并換行,它們都在命名空間std中,那么它們
2021-09-29 15:22:391335
在C++中如何用虛函數(shù)實(shí)現(xiàn)多態(tài)
01 — C++虛函數(shù)探索 C++是一門面向?qū)ο笳Z言,在C++里運(yùn)行時(shí)多態(tài)是由虛函數(shù)和純虛函數(shù)實(shí)現(xiàn)的,現(xiàn)在我們看下在C++中如何用虛函數(shù)實(shí)現(xiàn)多態(tài)。先來看一段代碼
2021-09-29 14:18:491293
C++之操作符重載學(xué)習(xí)的總結(jié)
操作符重載是c++的強(qiáng)大特性之一;操作符重載的本質(zhì)是通過函數(shù)擴(kuò)展操作符的功能;operator 關(guān)鍵字是實(shí)現(xiàn)操作符重載的關(guān)鍵。
2020-12-24 16:36:35373
C++之操作重載符學(xué)習(xí)的總結(jié)(二)
復(fù)數(shù)的概念可以通過自定義類實(shí)現(xiàn);復(fù)數(shù)中的運(yùn)算操作可以通過操作符重載實(shí)現(xiàn);賦值操作符只能通過成員函數(shù)實(shí)現(xiàn);操作符重載的本質(zhì)為函數(shù)定義。
2020-12-24 16:26:46294
干貨:三大實(shí)例講解三種C++運(yùn)算符重載
本章節(jié)主要講解是運(yùn)算符重載。運(yùn)算符重載是賦予運(yùn)算符能操作自定義類型的功能。C++運(yùn)算符重載主要分為以下三類:
2020-09-30 16:59:432927
用HDL代碼描述加法運(yùn)算要用操作符“+” 看似很簡單實(shí)則不然
采用HDL代碼描述加法運(yùn)算只需要用操作符+即可,這看似很簡單,這里我們以兩個(gè)4-bit數(shù)相加為例,對輸入/輸出數(shù)據(jù)均寄存,從而形成如下圖所示電路。 此電路對應(yīng)的HDL代碼如下圖所示。這里采用
2020-09-24 14:31:151821
C語言的sizeof操作符基礎(chǔ)和經(jīng)典問題
在C語言中,sizeof是一個(gè)操作符(operator),而不是函數(shù)!其用于判斷數(shù)據(jù)類型或者表達(dá)式長度(所占的內(nèi)存字節(jié)數(shù))。其有兩種表達(dá)形式:
2020-04-04 17:39:002179
Linux中命令鏈接操作符的實(shí)際應(yīng)用
Linux命令中的鏈接的意思是,通過操作符的行為將幾個(gè)命令組合執(zhí)行。Linux中的鏈接命令,有些像你在shell中寫短小的shell腳本,并直接在終端中執(zhí)行。鏈接使得自動處理變得更方便。
2019-05-06 17:44:00665
C++程序設(shè)計(jì)教程之運(yùn)算符重載的詳細(xì)資料說明
本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之運(yùn)算符重載的詳細(xì)資料說明主要內(nèi)容包括了:1. 什么是運(yùn)算符重載,2. 運(yùn)算符重載的方法,3. 重載運(yùn)算符的規(guī)則,4. 運(yùn)算符重載函數(shù)作為類成員函數(shù)和友元函數(shù)
2019-03-14 16:04:004
C++程序設(shè)計(jì)教程之?dāng)?shù)據(jù)類型與表達(dá)式的詳細(xì)資料說明
本文檔的主要內(nèi)容詳細(xì)介紹的是C++程序設(shè)計(jì)教程之?dāng)?shù)據(jù)類型與表達(dá)式的詳細(xì)資料說明包括了:1 . C++的數(shù)據(jù)類型,2 . 常量,3 . 變量,4 . C++的運(yùn)算符,5 . 算術(shù)運(yùn)算符與算術(shù)表達(dá)式,6 . 賦值運(yùn)算符與賦值表達(dá)式,7. 逗號運(yùn)算符與逗號表達(dá)式
2019-03-14 14:48:250
C++程序設(shè)計(jì)教程之類的詳細(xì)資料說明
) , 3.操作符 ( Operators ) , 4.再論程序結(jié)構(gòu) ( Program Struture Restatement ), 5.屏蔽類的實(shí)現(xiàn) ( Shield Class Implementations ) , 6.靜態(tài)成員 ( Static Members ) ,7.友元 ( Friends )
2019-02-22 09:44:002
Visual C++教程之C++的語言資料概述免費(fèi)下載
本文檔詳細(xì)介紹的是Visual C++教程之C++的語言資料概述免費(fèi)下載主要內(nèi)容包括了:1 從C到C++的程序結(jié)構(gòu) ,2 程序書寫規(guī)范,3 數(shù)據(jù)類型,4 運(yùn)算符和表達(dá)式,5 基本語句 ,6 函數(shù),7 指針和引用,8 作用域和存儲類型 ,9 預(yù)處理
2019-02-15 15:59:353
C++入門教程之?dāng)?shù)據(jù)類型、運(yùn)算符和表達(dá)式的詳細(xì)資料說明
本文檔的詳細(xì)介紹的是C++入門教程之?dāng)?shù)據(jù)類型、運(yùn)算符和表達(dá)式的詳細(xì)資料說明。主要內(nèi)容包括了:
基本數(shù)據(jù)類型
常量和變量
輸入輸出
運(yùn)算符和表達(dá)式
數(shù)據(jù)類型的轉(zhuǎn)換
構(gòu)造數(shù)據(jù)類型
2019-02-15 11:26:172
VISUAL C++教程之VISUAL C++的安裝和使用方法
本文檔的主要內(nèi)容詳細(xì)介紹的是VISUAL C++教程之VISUAL C++的安裝和使用方法資料免費(fèi)下載。
2018-12-27 16:32:1618
如何快速入門運(yùn)維?了解Linux中的10個(gè)命令鏈接操作符
Linux命令中鏈接的意思是,通過操作符的行為將幾個(gè)命令組合執(zhí)行。Linux中的鏈接命令,有些像你在shell中寫短小的shell腳本,并直接在終端中執(zhí)行。鏈接使得自動處理變得更方便。不僅如此,一個(gè)無人看管的機(jī)器在鏈接操作符的幫助下能夠十分有條理地運(yùn)行。
2018-10-03 19:33:002769
關(guān)于Tcl中的數(shù)學(xué)運(yùn)算
expr命令所支持的計(jì)算操作符是C語言中操作符的一個(gè)子集,并且寫法、優(yōu)先級也和C語言中的完全一致,包括基本計(jì)算符(加、減、乘、除、取余)、關(guān)系運(yùn)算符、邏輯運(yùn)算符、移位運(yùn)算符、按位邏輯運(yùn)算符和三重
2018-09-04 10:22:148573
了解一下比較復(fù)雜也非常神秘的new
“new”是C++的一個(gè)關(guān)鍵字,同時(shí)也是操作符。關(guān)于new的話題非常多,因?yàn)樗_實(shí)比較復(fù)雜,也非常神秘。
2018-04-23 15:27:133271
C++語法的外圍基礎(chǔ)
程序?qū)?nèi)存空間的動態(tài)分配的頻繁程度要求簡化語言的相關(guān)語法的格式。C++語法規(guī)定new算符等效于C語言中mal1oc一類的函數(shù)功能;free算符等效于C語言中free一類的函數(shù)功能。其格式為: 指向?qū)?yīng)類型的指針=new 類型描述符; delete 指向?qū)?yīng)類型的指針;
2018-03-15 16:55:3210
條件運(yùn)算符的用法_C運(yùn)算符的結(jié)合方向
條件運(yùn)算符優(yōu)先級高于賦值、逗號運(yùn)算符,低于其他運(yùn)算符。在標(biāo)準(zhǔn)C語言的文檔里,對操作符的結(jié)合性并沒有作出非常清楚的解釋。一個(gè)滿分的回答是:它是仲裁者,在幾個(gè)操作符具有相同的優(yōu)先級時(shí)決定先執(zhí)行哪一個(gè)
2018-02-24 16:36:339257
Linux中的鏈接操作符可降低系統(tǒng)負(fù)載、寫出更加簡短有意義的代碼
鏈接使得自動處理變得更方便,不僅如此,一個(gè)無人看管的機(jī)器在鏈接操作符的幫助下能夠十分有條理地運(yùn)行。
2017-12-22 11:52:141296
分享java虛擬機(jī)原理圖解
Java看起來設(shè)計(jì)得很像C++,但是為了使語言小和容易熟悉,設(shè)計(jì)者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載
2017-12-01 15:20:052256
C++內(nèi)存泄漏分析方法
C++是一種非常流行的計(jì)算機(jī)編程語言,在使用的過程中容易出現(xiàn)內(nèi)存泄漏問題,而該問題往往難以識別。給出了一種對C++內(nèi)存泄漏問題進(jìn)行分析的方法,該方法得到C++源代碼的抽象語法樹,從抽象語法樹中提
2017-11-23 11:19:035
C++語言基礎(chǔ)講解視頻標(biāo)識符與關(guān)鍵字
C++語言基礎(chǔ)講解視頻標(biāo)識符與關(guān)鍵字,喜歡的朋友可以下載來學(xué)習(xí)。
2016-01-14 15:31:387
Verilog HDL程序設(shè)計(jì)例程
【例 3.1】4 位全加器 module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule
2011-09-07 16:16:28176
華為內(nèi)部員工培訓(xùn)資料-C++課件
C++語言中級教材講授C++語言的運(yùn)用技術(shù),包括:類、對象之間的關(guān)系、對象的存儲與布局、運(yùn)算符重載、智能指針、仿函數(shù)、泛型編程,C++模式設(shè)計(jì)基本思想。
目 &n
2008-10-16 14:10:23286
密碼編碼學(xué)(加密方法的C與C++實(shí)現(xiàn)) pdf第二版
密碼編碼學(xué)(加密方法的C與C++實(shí)現(xiàn))分分三個(gè)部分。第一部分描述密碼學(xué)中的常用算法和數(shù)論算法,以及這些算法的C和C++程序?qū)崳坏诙糠置枋雒艽a算法的C和C++實(shí)現(xiàn),主要包括RSA系
2008-09-25 09:49:06250
評論
查看更多