問題描述:
設圖中的各邊的權值均為相等,以鄰接表為儲存結構,求頂點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...