圖的鄰接表存儲(chǔ)表示示例講解
//---------圖的鄰接表存儲(chǔ)表示-------
#include<stdio.h>
#include<stdlib.h>
#define MAX_VERTEXT_NUM 20
typedef int InfoType;
typedef char VertextType;
typedef struct ArcNode
{
int adjvex;
struct ArcNode *nextArc;
InfoType *info;
}ArcNode;
typedef struct VNode
{
VertextType data;
ArcNode *firstArc;
}VNode, AdjList[MAX_VERTEXT_NUM];
typedef struct
{
AdjList verTices;
int vexNum;
int arcNum;
int kind;
}ALGraph;
void CreateGraph(ALGraph *G);
void DisplayGraph(ALGraph *G);
int main()
{
ALGraph *Graph = (ALGraph *)malloc(sizeof(ALGraph));
CreateGraph(Graph);
DisplayGraph(Graph);
system("pause");
}
void CreateGraph(ALGraph *G)
{
int i,j,k;
ArcNode *arcNode;
printf_s("請(qǐng)輸入頂點(diǎn)數(shù)和邊數(shù):");
scanf_s("%d,%d",&G->vexNum, &G->arcNum);
//建立頂點(diǎn)表
printf_s("建立頂點(diǎn)表\n");
for (i = 0; i < G->vexNum; i++)
{
printf_s("請(qǐng)輸入第%d個(gè)頂點(diǎn):", i);
fflush(stdin);//刷新緩沖區(qū)
G->verTices[i].data = getchar();
G->verTices[i].firstArc = NULL;
}
//建立邊表
printf_s("建立邊表\n");
for (k = 0; k < G->arcNum; k++)
{
printf_s("請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)");
scanf_s("%d,%d", &i, &j);
arcNode = (ArcNode *)malloc(sizeof(ArcNode));
arcNode->adjvex = j;
arcNode->nextArc = G->verTices[i].firstArc;//插入表頭
G->verTices[i].firstArc = arcNode;
arcNode = (ArcNode *)malloc(sizeof(ArcNode));
arcNode->adjvex = i;
arcNode->nextArc = G->verTices[j].firstArc;//插入表頭
G->verTices[j].firstArc = arcNode;
}
}
void DisplayGraph(ALGraph *G)
{
int i;
for (i = 0; i < G->vexNum; i++)
{
printf_s("%d->", i);
while (G->verTices[i].firstArc != NULL)
{
printf_s("%d->", G->verTices[i].firstArc->adjvex);
G->verTices[i].firstArc = G->verTices[i].firstArc->nextArc;
}
printf_s("\n");
}
}
請(qǐng)輸入頂點(diǎn)數(shù)和邊數(shù):6,7
建立頂點(diǎn)表
請(qǐng)輸入第0個(gè)頂點(diǎn):0
請(qǐng)輸入第1個(gè)頂點(diǎn):1
請(qǐng)輸入第2個(gè)頂點(diǎn):2
請(qǐng)輸入第3個(gè)頂點(diǎn):3
請(qǐng)輸入第4個(gè)頂點(diǎn):4
請(qǐng)輸入第5個(gè)頂點(diǎn):5
建立邊表
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)0,1
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)0,4
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)1,4
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)1,5
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)2,3
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)2,5
請(qǐng)輸入(vi-vj)的頂點(diǎn)對(duì)序號(hào)3,5
0->4->1->
1->5->4->0->
2->5->3->
3->5->2->
4->1->0->
5->3->2->1->
請(qǐng)按任意鍵繼續(xù). . .
欄 目:C語(yǔ)言
下一篇:C++非遞歸遍歷磁盤文件和遞歸遍歷磁盤文件的程序示例
本文標(biāo)題:圖的鄰接表存儲(chǔ)表示示例講解
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3902.html
您可能感興趣的文章
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)式函數(shù)庫(kù)
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)數(shù)怎么表達(dá)
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎么打出三角函數(shù)的值
- 01-10c語(yǔ)言求1+2+...+n的解決方法
- 01-10求子數(shù)組最大和的解決方法詳解
- 01-10深入理解約瑟夫環(huán)的數(shù)學(xué)優(yōu)化方法
- 01-10深入二叉樹兩個(gè)結(jié)點(diǎn)的最低共同父結(jié)點(diǎn)的詳解
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)- 解析最少換車次數(shù)的問(wèn)題詳解
- 01-10c語(yǔ)言 跳臺(tái)階問(wèn)題的解決方法
- 01-10如何判斷一個(gè)數(shù)是否為2的冪次方?若是,并判斷出來(lái)是多少次方


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?


