資源簡介
c語言編寫的scale-free network生成程序,可以自己設定初始有幾個點,幾條邊,適合網絡初學者
代碼片段和文件信息
#include?
#include?
#include?
//BA無標度網絡
#define?N?20000
typedef?struct?node
{
int?name;
node*?link;
int?degree;
double?probability;
};
int?main(){
FILE*?fp;
int?ijkhx;
int?m0m;
int?D;//the?sum?of?all?the?node?degree
double?count?prosum;
fp?=?fopen(“BA-out.txt““w+“);
node?*no?*no1;
node?*Node[N];//Node數組中元算關心的是節點的度,Node數組后面連接的只關心其與哪個節點相連(即每次不更新后面節點的度)
printf(“Please?input?m0?and?m?(m?<=?m0)!\n“);
scanf(“%d?%d“&m0?&m);
sum?=?0;
//網絡初始化,初始節點互相連通
for?(i?=?0;?i? Node[i]=(node*)malloc(sizeof(node));
Node[i]->name?=?i+1;?Node[i]->degree?=?m0-1;?Node[i]->probability?=?(double)1/m0;?Node[i]->link?=?NULL;
no?=?(node*)malloc(sizeof(node));
no?=?Node[i];
for?(j?=?1;?j?<=?m0;?j++)
if?(j?!=?i+1){
no1?=?(node*)malloc(sizeof(node));
no1->name?=?j;?no1->link?=?NULL;?no1->degree?=?0;?no1->probability?=?0;
no->link?=?no1;
no?=?no->link;
}
sum?=?sum?+?Node[i]->probability;
}
D?=?m0?*?(m0?-?1);
//優先鏈接的增長
double?random;
srand((unsigned)time(NULL));
for?(i?=?m0;?i? //新加入點的初始化(無論有無連邊,都要新加入一個點)
Node[i]?=?(node*)malloc(sizeof(node));
Node[i]->name?=?i+1;
Node[i]->link?=?NULL;
Node[i]->degree?=?0;
Node[i]->probability?=?0;//先初始化為0,等到新加入的點全部算完,再一起重新計算概率
- 上一篇:高斯函數消元法c語言源代碼,解矩陣用的
- 下一篇:計算機圖形學畫月亮C語言
評論
共有 條評論