鏈式前向星存儲結構

鏈式前向星存儲結構ios

 1 #include <iostream>
 2 using namespace std;  3 #define maxN 100
 4 #define maxM 10000
 5 
 6 struct EdgeNode  7 {  8     int to;  9     int w; 10     int next; 11 }; 12 EdgeNode Edges[maxM]; 13 int head[maxN]; //須要初始化爲0或-1。head[i]存儲以點Vi開頭的第一條邊在邊數組Edges[]中的位置。 
14 
15 int main(int argc, char *argv[]) 16 { 17     int n,m; 18     int i,j,k,w; 19     freopen("data.in","r",stdin); 20     freopen("data.out","w",stdout); 21     memset(head,-1,sizeof(head)); 22     cin>>n>>m;//n個頂點,m條邊 
23     for(k=0;k<m;k++) 24  { 25         cin>>i>>j>>w; 26         Edges[k].to=j; 27         Edges[k].w=w; 28         Edges[k].next=head[i]; 29         head[i]=k; 30  } 31     //遍歷整個圖的邊
32     for(i=1;i<=n;i++)//這裏頂點編號從1開始 
33  { 34         for(k=head[i];k!=-1;k=Edges[k].next) 35  { 36             cout<<i<<' '<<Edges[k].to<<" "<<Edges[k].w<<endl; 37  } 38  } 39     /*
40  printf("\n\n"); 41  for(k=1;k<=n;k++) 42  printf("%d\t",k); 43  printf("\n"); 44  for(k=1;k<=n;k++) 45  printf("%d\t",head[k]); 46  printf("\n\n"); 47     
48  for(k=0;k<=m;k++) 49  printf("%d\t",k); 50  printf("\n"); 51  for(k=0;k<=m;k++) 52  printf("%d\t",Edges[k].to); 53  printf("\n"); 54  for(k=0;k<=m;k++) 55  printf("%d\t",Edges[k].w); 56  printf("\n"); 57  for(k=0;k<=m;k++) 58  printf("%d\t",Edges[k].next); 59  printf("\n"); 60     */
61     return 0; 62 }
View Code

 

輸入樣例數據數組

8 12
5 8 29
6 1 12
8 3 11
1 2 4
3 1 22
4 3 17
7 4 25
6 5 9
8 7 7
1 6 9
3 2 19
6 7 4ide

輸出結果:spa

1 6 9
1 2 4
3 2 19
3 1 22
4 3 17
5 8 29
6 7 4
6 5 9
6 1 12
7 4 25
8 7 7
8 3 11


1    2    3    4    5    6    7    8    
9    -1    10    5    0    11    6    8    

0    1    2    3    4    5    6    7    8    9    10    11    12    
8    1    3    2    1    3    4    5    7    6    2    7    0    
29    12    11    4    22    17    25    9    7    9    19    4    0    
-1    -1    -1    -1    -1    -1    -1    1    2    3    4    7    0
View Code

 

 

相關文章
相關標籤/搜索