廣度優先遍歷求指定頂點之間的最短路徑

2021-04-14 00:55:51 字數 1174 閱讀 7204

問題描述:

設圖中的各邊的權值均為相等,以鄰接表為儲存結構,求頂點v到頂點u的最短路徑長度,要求輸出路徑上的每乙個頂點。

演算法思路:採用廣度優先遍歷演算法,當訪問到的當前頂點為所指定的終點時,結束遍歷,利用佇列中每中元素的pre值尋找起點到終點的最短路徑(當前頂點的pre值即為鏈結以當前頂點為終點的弧的表頭結點序號)。

演算法實現:

#include

#include

#include

#define maxsize 100

typedef char infotype;

typedef char vertex;

typedef struct anode

arcnode;

typedef struct

vertexnode;

typedef struct

algraph;

struct queue

queue[maxsize];

int front=-1,rear=-1;

void _print(int);

void createalgraph(algraph*&,int**,int);

void shortest_path(algraph*,int,int,int*);

void createalgraph(algraph *&g,int array[maxsize],int k)

g->n=k;g->e=cnt;

}void shortest_path(algraph *g,int v,int u,int visited)

p=g->adjlist[m].fistarc;

while(p!=null)

p=p->nextarc;}}

}void _print(int front)

while(k!=0);

k=0;

while(kk++;

}printf("/n%d/n",cnt-1);

}int main(),,

,,,};

algraph *g;

createalgraph(g,graph_array,6);

int visited[maxsize]=;

shortest_path(g,0,5,visited);

return 0;

}

linux(c)廣度優先遍歷指定目錄

廣度優先遍歷採取的是先遍歷完本層目錄下的所有檔案和目錄,當判斷是目錄時則將該目錄加入到目錄佇列中,等待遞迴遍歷這個目錄 include include include include include char path 100000 250 int main int argc,char argv v...

樹的廣度優先插入以及廣度優先遍歷

重點 樹的廣度操作 二叉樹的廣度優先插入借助佇列來實現 一 對二叉樹的認識 二叉樹是每個結點最多有兩個子樹的樹結構。二 本文主要是對樹的廣度優先插入進行操作。三 原理解析 public class cilquedemo arr arrnew top top start start 0 public ...

樹的廣度優先插入和廣度優先遍歷

樹的廣度優先遍歷 從佇列中取出的每乙個結點,當它完成自己的使命之後 指向新的結點,也就是它的左孩子和右孩子 就會被自動 package com.bdrjxy.web public class test tree root new tree 定義樹的根結點 root.value arr 0 賦值 qu...