資源簡介
問題描述:平均路徑長度是網絡中另一個重要的特征度量,他是網絡中所有節點對之間的平均最短距離。這里節點間的距離指的是從一個節點要經歷的邊的最小數目,其中所有節點之間的最大距離稱為網絡的直徑。平均路徑長度和直徑衡量的是網絡的傳輸性能與效率。平均路徑長度的公式為
,其中dij表示點i和j之間的最短距離(若dij不存在時,dij就不能加入,且分母要相應減1)
要求:輸入鄰接矩陣表示的圖,計算其平均路徑長度

代碼片段和文件信息
/******************?DArray.c?*****************/
/*?This?is?file?is?about?Dynamic-array?*******/
?
#include?
#include?
#include?“DArray.h“
//?Allocate?the?empty?DArray?by?rows?and?cols
int?DACreate(DArray?*DA?int?rows?int?cols){
int?i;
//?This?is?function?just?for?array2D?is?NULL
if?(DA->array2D?!=?NULL)
return?DARRAY_FAIL;
//?Invalid?rows?or?cols
if?(rows<=0?||?cols<=0)
return?DARRAY_FAIL;
//?Allocate?the?rows
DA->array2D?=?(DADataType**)?calloc(rows?sizeof(DADataType*));
if?(DA->array2D?==?NULL)
return?DARRAY_FAIL;
//?Allocate?the?cols
for?(i=0;?i DA->array2D[i]?=?(DADataType*)calloc(cols?sizeof(DADataType));
if?(DA->array2D[i]?==?NULL){//?Allocate?fail
while(--i?>=?0)//?free?the?previous?rows
free(DA->array2D[i]);
return?DARRAY_FAIL;
}
}
return?DARRAY_DONE;
}
//?Initial?the?dynamic-array
int?DAInitial(DArray?*DA){
DA->array2D?=?NULL;
DA->cols?=?0;
DA->rows?=?0;
DA->size?=?0;
DA->curRow?=?0;
DA->curCol?=?0;
//?Create?some?memoroy
if?(DACreate(DA?DEF_DARRAY_ROWS?DEF_DARRAY_COLS)?!=?DARRAY_FAIL){
DA->maxRows?=?DEF_DARRAY_ROWS;
DA->maxCols?=?DEF_DARRAY_COLS;
DA->capacity?=?DEF_DARRAY_CAP;
}else
return?DARRAY_FAIL;
return?DARRAY_DONE;
}
//?Destory?the?DArray
void?DADestroy(DArray?*DA){
DADataType?*temp;
int?end;
//?Invalid?argument?or?have?alread?destroy
if?(DA==NULL?||?DA->array2D==NULL)
return;
DARestore(DA); //?move?the?curRow?to?first
end?=?DA->maxRows;
while?(end--){
temp?=?DA->array2D[DA->curRow];
DA->curRow++;
free(temp); //?free?every?row
}
free(DA->array2D); //?free?all?row?poitor
DA->array2D?=?NULL;
//?No?element
DA->cols?=?DA->rows?=?DA->size?=?0;
//?current?poitor
DA->curRow?=?0;
DA->curCol?=?0;
//?default?capacity
DA->capacity?=?0;
DA->maxCols?=?DA->maxRows?=?0;
}
//?copy?from?DASrc?to?DADest
int?DACopy(DArray?*DADest?DArray?*DASrc){
//?Invalid?argument
if?(DADest==NULL?||?DASrc==NULL)
return?DARRAY_FAIL;
//?if?the?source?is?empty
if?(DAEmpty(DASrc)?==?DARRAY_EMPTY){
if?(DAEmpty(DADest)?!=?DARRAY_EMPTY)
DADestroy(DADest);
return?DARRAY_DONE;
}
//?DASrc?is?not?empty?then?free?dest‘s?memory?first
if?(DAEmpty(DADest)?!=?DARRAY_EMPTY)
DADestroy(DADest); //?this?operate?destroy?all?memory
//?Create?the?same?memory?as?src
if?(DAReCreate(DADest?DASrc->maxRows?DASrc->maxCols)?==?DARRAY_FAIL)
return?DARRAY_FAIL;
//?copy?some?argument
DADest->rows?=?DASrc->rows;
DADest->cols?=?DASrc->cols;
DADest->size?=?DASrc->size;
DADest->capacity?=?DASrc->capacity;
DARestore(DADest);
DARestore(DASrc);
//?copy?all?data
do?{
DAGet(DADest)?=?DAGet(DASrc);
DANext(DADest);
}while?(DANext(DASrc)?!=?DARRAY_END);
return?DARRAY_DONE;
}
//?reallocate?the?maximum?element?in?DArray
int?DAReCreate(DArray?*DA?int?rows?int?cols){
int?i?j;
int?maxRows?maxCols;
DADataType?**newArr;
if?(rows<0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5949??2011-06-17?09:54??程序_圖的平均路徑長度\DArray.c
?????文件???????3122??2011-06-17?09:53??程序_圖的平均路徑長度\DArray.h
?????文件???????8816??2011-06-23?11:20??程序_圖的平均路徑長度\li
?????文件???????2579??2011-06-17?09:51??程序_圖的平均路徑長度\li
?????文件???????1327??2011-06-23?11:51??程序_圖的平均路徑長度\main.c
?????文件??????12671??2007-06-22?15:50??程序_圖的平均路徑長度\MatrixGraph.c
?????文件???????3392??2011-06-17?09:54??程序_圖的平均路徑長度\MatrixGraph.h
?????文件????????290??2011-06-23?11:53??程序_圖的平均路徑長度\readme.txt
?????目錄??????????0??2011-07-09?14:41??程序_圖的平均路徑長度
-----------?---------??----------?-----??----
????????????????38146????????????????????9
- 上一篇:導線平差計算EXCEL
- 下一篇:操作系統簡單二級文件系統
評論
共有 條評論