adt鄰接表和鄰接矩陣解決問題(資料結構實驗)

2021-09-29 19:26:39 字數 4152 閱讀 8351

題目:

1. 【問題描述】

l 需要分別基於鄰接矩陣和鄰接表來實現圖adt

l 需要實現圖的各個基本操作

l 小明最近在學習資料結構中圖的相關知識,他需要輸出有向圖的鄰接矩陣並找出有向圖**度最大的點。你能幫他解決這個問題麼?

【輸入形式】

每一組第一行有兩個數n、m表示n個頂點,m條有向邊。

輸入頂點資訊,並用空格隔開,頂點資訊以大寫字母表示

接下來有m行,每行三個數u、v、w代表權值為w的一條由u到v的有向邊

注意: 2<=n<=10,n【輸出形式】

輸出矩陣:每條邊發出的頂點對應行,進入的頂點對應列

輸出的第乙個字元為出度和最大的點所表示的字元,第二個為該點的出度的值,如果出度相同,則依據點的字元大小,輸出字元大的點。

【樣例輸入】

4 3 

a b c d

a b 1

b c 1

b d 1

【樣例輸出】

0 1 0 0

0 0 1 1

0 0 0 0

0 0 0 0

b 2

【實驗**提交及評分】

源**請提交工程壓縮包,壓縮包內至少包含以下三個檔案:
1)***.h:圖adt的定義和宣告

2)***.h:圖adt的實現

3)***xx.cpp:主程式

(要求基於adt實現,否則計0分。)
鄰接矩陣虛函式

#pragma once

template

<

classt,

class

func

>

class

graghtangu;~

graghtangu()

;virtual

bool

addnode

(t a)=0

;virtual

void

clear()

=0;virtual

bool

addedage

(t a,t b,

int x)=0

;virtual

void

build

(int n)=0

;virtual

void

around

(func fun)=0

;virtual

void

visit

(int i,

int j, func fun)=0

;virtual

intfind

(t a, t b)=0

;};

鄰接矩陣實際**

#pragma once

#include

"graghtangu.h"

template

<

classt,

class

func

>

class

graghtangucode

:public graghtangu};

~graghtangucode()

;virtual

void

clear()

};bool

addedage

(t a, t b,

int x)

int j =0;

for(

; j < nanum;

++j)

array[i]

[j]= x;

return1;

};void

build

(int n)

;bool

addnode

(t a)

return0;

}void

around

(func fun)};

void

visit

(int i,

int j, func fun)

intfind

(t a, t b)

int j =0;

for(

; j < nanum;

++j)

return array[i]

[j];}}

;

鄰接表虛函式

#pragma once

template

<

classt,

class

func

>

class

graghli;~

graghli()

;virtual

bool

addnode

(t a)=0

;virtual

void

clear()

=0;virtual

bool

addedage

(t a, t b,

int x)=0

;virtual

void

visit

(t i, t j, func fun)=0

;};

鄰接表實際實現

#pragma once

#include

"node.h"

#include

"graphli.h"

//#include

template

<

classt,

class

func

>

class

graghlicode

:public graghli;~

graghlicode()

;virtual

void

clear()

};bool

addedage

(t a, t b,

int x)

p = p-

>next;

}return0;

}bool

addnode

(t a)

p->next = ne;

}else head = ne;

return1;

}void

visit

(t i, t j, func fun)

e = e-

>next;}}

p = p-

>next;}}

intgetin

(t a)

// std::cout << "sdjfdjsdkl";

p = p-

>next;

}return-1

;};}

主函式:

#include

#include

#include

"graphtangucode.h"

#include

"graphlicode.h"

;using

namespace std;

struct visit};

intmain()

int k;

//cout << "hdsjkfdsksdlj";

for(

int i =

0; i < m;

++i)

for(

int i =

0; i < n;

++i)

cout << endl;

}char ans = name[0]

;int max = graph2.

getin

(name[0]

);//cout << max << endl;

for(

int i =

1; i < n;

++i)

} cout << ans <<

" "<< max;

cin >> k;

return0;

}/*4 3a b c d

a b 1

b c 1

b d 1

*/

鄰接表轉鄰接矩陣

假設無向圖g採用鄰接矩陣儲存,編寫乙個演算法輸出鄰接表。description 第一行為乙個 整數n,表示頂點的個數 頂點 編號為0到n 1 接下來是為乙個n n大小的 整數矩陣,表示圖的鄰接關係。數字為0表示不鄰接,1表示鄰接。input 輸出圖g的鄰接表。第一行表示頂點0可直接到達的 頂點編號。...

鄰接矩陣與鄰接表

鄰接矩陣表示圖 public class graph private int vertexnum private int edgenum private int g 鄰接矩陣 public graph int vertexnum public void insertedge edge edge pu...

鄰接矩陣 鄰接鍊錶 轉換

include include include graph.h include using namespace std typedef int infotype define maxv 100 最大頂點個數 define inf 32767 inf表示 以下定義鄰接矩陣型別 typedef stru...