数据结构——图的C语言实现
生活随笔
收集整理的這篇文章主要介紹了
数据结构——图的C语言实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1.什么是圖?
- 2.圖的抽象數(shù)據(jù)結(jié)構(gòu)
- 3.如何在程序中表示一個(gè)圖?
- 3.1 鄰接矩陣
- 3.2 鄰接表
- 4.圖的遍歷
- 4.1 深度優(yōu)先搜索
- 4.2 廣度優(yōu)先搜索
- 5.圖的C語(yǔ)言實(shí)現(xiàn)
1.什么是圖?
2.圖的抽象數(shù)據(jù)結(jié)構(gòu)
3.如何在程序中表示一個(gè)圖?
3.1 鄰接矩陣
3.2 鄰接表
4.圖的遍歷
4.1 深度優(yōu)先搜索
4.2 廣度優(yōu)先搜索
5.圖的C語(yǔ)言實(shí)現(xiàn)
#include<stdio.h> #include<stdlib.h>#define WeightType int #define MaxVertexNum 3 typedef struct GNode *PtrToGNode; typedef PtrToGNode MGraph; typedef int Vertex; typedef struct ENode *PtrToENode; typedef PtrToENode Edge;struct GNode{int Nv; //頂點(diǎn)數(shù)int Ne; //邊數(shù)WeightType G[MaxVertexNum][MaxVertexNum]; }; struct ENode{Vertex V1,V2;WeightType Weight; };//1.初始化 MGraph CreateGraph(int VertexNum) {Vertex V,W;MGraph Graph;Graph=(MGraph)malloc(sizeof(struct GNode));Graph->Nv=VertexNum;Graph->Ne=0;for(V=0;V<Graph->Nv;V++){for(W=0;W<Graph->Nv;W++){Graph->G[V][W]=0;}}return Graph; }//2.插入邊 void InsertEdge(MGraph Graph,Edge E) {//插入邊<V1,V2>Graph->G[E->V1][E->V2]=E->Weight;//無向圖,還要插入<V2,V1>Graph->G[E->V2][E->V1]=E->Weight; }int main() {int i,j;MGraph Graph;Edge E[3];Graph=CreateGraph(3);for(i=0;i<3;i++){for(j=0;j<3;j++){printf("G[%d][%d]=%d ",i,j,Graph->G[i][j]);}}printf("\n");for(i=0;i<3;i++){E[i]=(Edge)malloc(sizeof(struct ENode));}E[0]->V1=0;E[0]->V2=1;E[0]->Weight=2;E[1]->V1=1;E[1]->V2=2;E[1]->Weight=3;E[2]->V1=0;E[2]->V2=2;E[2]->Weight=6;for(i=0;i<3;i++){InsertEdge(Graph,E[i]);}for(i=0;i<3;i++){ for(j=0;j<3;j++){printf("G[%d][%d]=%d ",i,j,Graph->G[i][j]);}}printf("\n");return 0; }總結(jié)
以上是生活随笔為你收集整理的数据结构——图的C语言实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目:基于以太网通信,单片机作为客户端,
- 下一篇: 哔哩哔哩n倍速播放视频