📄 graphcreate.h
字号:
#ifndef GRAPHCREATE_H__#define GRAPHCREATE_H__#include "debugging.h"#include "memory.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 vvalue (*graph).getnode[degindex][dispindex]#define vnodevalue (*graph).rec[degindex][dispindex]/*#define vmessage (*graph).vnodes[(*graph).vdegreelookup[(*graph).vdegrees[node]]][(*graph).vdegreedisp[node]][socket]#define cmessage (*graph).cnodes[(*graph).cdegreelookup[(*graph).cdegrees[node]]][(*graph).cdegreedisp[node]][socket] #define vtomessage (*((*graph).cnodeedges[(*graph).cdegreelookup[(*graph).cdegrees[node]]][(*graph).cdegreedisp[node]][socket]).msgforvnode) #define ctomessage (*((*graph).vnodeedges[(*graph).vdegreelookup[(*graph).vdegrees[node]]][(*graph).vdegreedisp[node]][socket]).msgforcnode)*/#define vmessage (*graph).vnodes[degindex][socket][dispindex]#define cmessage (*graph).cnodes[degindex][socket][dispindex+temp]#define vtomessage (*((*graph).cnodeedges[degindex][socket][dispindex+temp]).msgforvnode)#define ctomessage (*((*graph).vnodeedges[degindex][socket][dispindex+temp]).msgforcnode)#define vnodedeg (*graph).vdegrees[node]#define cnodedeg (*graph).cdegrees[node]/*************************** 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;typedef struct { short int *msgforcnode; short int *msgforvnode;}edge1;/************************* 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;typedef struct { short int *** cnodes; short int *** vnodes; short int ** rec; double rate; int **getnode; int * cdegreelookup, * vdegreelookup; int vnodenum; int cnodenum; int vdegreesnum; int cdegreesnum; int vmaxdegree; int cmaxdegree; int * vdegrees, * cdegrees; int * vdegreedisp , * cdegreedisp; degreelist *vdegreelist; degreelist *cdegreelist; edge1 *** cnodeedges; edge1 *** vnodeedges;}graphstemp;extern int *codes[];int getGraph(int index, graphs *graph, int *gap, int **iphi);int getGraphtemp(int index, graphstemp *graph, int *gap, int **iphi);void freeGraph(graphs *graph,int *iphi);void freeGraphtemp(graphstemp *graph, int *iphi);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -