📄 graph.h
字号:
#define MAXDEGREENUM 100#define MAXCYCLE 4#define vnodedegree (*((*graph).vnodelist+node)).degree#define cnodedegree (*((*graph).cnodelist+node)).degree#define vtonodedegree (*((*graph).vnodelist+tonode)).degree #define ctonodedegree (*((*graph).cnodelist+tonode)).degree#define vnodevalue (*((*graph).vnodelist+node)).value#define vtonodevalue (*((*graph).vnodelist+tonode)).value#define vnodeedgelist (*((*graph).vnodelist+node)).edgelist#define cnodeedgelist (*((*graph).cnodelist+node)).edgelist#define vtonodeedgelist (*((*graph).vnodelist+tonode)).edgelist#define ctonodeedgelist (*((*graph).cnodelist+tonode)).edgelist#define vnodeedge (*((*((*graph).vnodelist+node)).edgelist+socket))#define cnodeedge (*((*((*graph).cnodelist+node)).edgelist+socket))#define vnodetoedge (*((*((*graph).vnodelist+tonode)).edgelist+tosocket))#define cnodetoedge (*((*((*graph).cnodelist+tonode)).edgelist+tosocket))#define vnodedegree1 (*((*graph1).vnodelist+node)).degree#define cnodedegree1 (*((*graph1).cnodelist+node)).degree#define vtonodedegree1 (*((*graph1).vnodelist+tonode)).degree #define ctonodedegree1 (*((*graph1).cnodelist+tonode)).degree#define vnodevalue1 (*((*graph1).vnodelist+node)).value#define vtonodevalue1 (*((*graph1).vnodelist+tonode)).value#define vnodeedgelist1 (*((*graph1).vnodelist+node)).edgelist#define cnodeedgelist1 (*((*graph1).cnodelist+node)).edgelist#define vtonodeedgelist1 (*((*graph1).vnodelist+tonode)).edgelist#define ctonodeedgelist1 (*((*graph1).cnodelist+tonode)).edgelist#define vnodeedge1 (*((*((*graph1).vnodelist+node)).edgelist+socket))#define cnodeedge1 (*((*((*graph1).cnodelist+node)).edgelist+socket))#define vnodetoedge1 (*((*((*graph1).vnodelist+tonode)).edgelist+tosocket))#define cnodetoedge1 (*((*((*graph1).cnodelist+tonode)).edgelist+tosocket))/*************************** edge: one integer which ** denotes the destination ** node and a double which ** contains the message ***************************/typedef struct { int dest; /* destination node */ int socket; /* socket at the destination */ double message; /* incoming message from distination node */ } edge;/************************* define structure of a ** variable node *************************/typedef struct { int degree; /* degree of node */ double value; /* received value */ edge *edgelist; /* list of connected edges */ } vnode;/************************* define structure of a ** check node *************************/typedef struct { int degree; /* degree of node */ edge *edgelist; /* list of connected edges */ } cnode;/************************* define structure of a ** degreelist *************************/typedef struct { int degree[MAXDEGREENUM]; /* particular degree */ int numofnodes[MAXDEGREENUM]; /* number of nodes with this particular degree */ } degreelist;/************************* define structure of a ** graph *************************/typedef struct { int vnodenum; /* number of vnodes */ int cnodenum; /* number of cnodes */ double rate; /* rate of the code */ int vdegreesnum; /* number of different vdegrees */ int cdegreesnum; /* number of different cdegrees */ int vmaxdegree; /* maximum vdegree */ int cmaxdegree; /* maximum cdegree */ double sumc; /* sum of rho_i/i */ double sumv; /* sum of lambda_i/i */ degreelist *vdegreelist; /* list of vdegrees */ degreelist *cdegreelist; /* list of cdegrees */ vnode *vnodelist; /* list of vnodes */ cnode *cnodelist; /* list of cnodes */ } graphs;void printgraph(graphs *, int);void switchedges(graphs *, int, int, int, int);void constructirregulargraph(graphs *, int, int *, double *, int, int *, double *, int, int);void readgraph(graphs *graph, int *gap, int **iphi, char *graphfile, int verbose);void savegraph(graphs *graph, int gap, int *iphi, char *graphfile, int verbose, int val);void constructregulargraph(graphs *graph, int vnodenum, int vdegree, int cdegree);void constructtwoirregulargraph(graphs *graph, graphs *graph1, int vnodenum, int vnodenum1, int *vdegreelist, int *vdegreelist1, double *vpercentagelist, double *vpercentagelist1, int vdegreesnum, int vdegreesnum1, int *cdegreelist, int *cdegreelist1, double *cpercentagelist, double *cpercentagelist1, int cdegreesnum, int cdegreesnum1, int verbose);void beginconstructgraph(int user, graphs *graph, int *vnodenum, int *vdegreelist, double *vpercentagelist, int vdegreesnum, int *cdegreelist, double *cpercentagelist, int cdegreesnum, int verbose);int verifyvnodenum(int *vnodenum, int numuser);void arrangevnode(graphs *graph, int vdegreesnum, int vnodenum, int vnodemax);void secondpartgraph(graphs *graph, int user,int *vnodenum, int vdegreesnum, int *cdegreesnum, int *cdegreelist, double *cpercentagelist, int verbose);void lastpartgraph(graphs *graph, int user, char *graphfile, int verbose); void constructseveralgraphs(int numus, graphs **graph, int *vnodenum, void *vdegreelist, double **vpercentagelist, int *vdegreesnum, int **cdegreelist, double **cpercentagelist, int *cdegreesnum, char **graphfile,int verbose);void freegraph(graphs *graph);// was before in sub.c:void *allocate(int);void skip(FILE *, int);void randompermutation(int *, int *, int);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -