📄 graph.h
字号:
/*
* graph.h - Abstract Data Type (ADT) for directed graphs
*/
typedef struct G_graph_ *G_graph; /* The "graph" type */
typedef struct G_node_ *G_node; /* The "node" type */
typedef struct G_nodeList_ *G_nodeList;
struct G_nodeList_ { G_node head; G_nodeList tail;};
/* Make a new graph */
G_graph G_Graph(void);
/* Make a new node in graph "g", with associated "info" */
G_node G_Node(G_graph g, void *info);
/* Make a NodeList cell */
G_nodeList G_NodeList(G_node head, G_nodeList tail);
/* Get the list of nodes belonging to "g" */
G_nodeList G_nodes(G_graph g);
/* Tell if "a" is in the list "l" */
bool G_inNodeList(G_node a, G_nodeList l);
/* Make a new edge joining nodes "from" and "to", which must belong
to the same graph */
void G_addEdge(G_node from, G_node to);
/* Delete the edge joining "from" and "to" */
void G_rmEdge(G_node from, G_node to);
/* Show all the nodes and edges in the graph, using the function "showInfo"
to print the name of each node */
void G_show(FILE *out, G_nodeList p, void showInfo(void *));
/* Get all the successors of node "n" */
G_nodeList G_succ(G_node n);
/* Get all the predecessors of node "n" */
G_nodeList G_pred(G_node n);
/* Tell if there is an edge from "from" to "to" */
bool G_goesTo(G_node from, G_node n);
/* Tell how many edges lead to or from "n" */
int G_degree(G_node n);
/* Get all the successors and predecessors of "n" */
G_nodeList G_adj(G_node n);
/* Get the "info" associated with node "n" */
void *G_nodeInfo(G_node n);
/* The type of "tables" mapping graph-nodes to information */
typedef struct TAB_table_ *G_table;
/* Make a new table */
G_table G_empty(void);
/* Enter the mapping "node"->"value" to the table "t" */
void G_enter(G_table t, G_node node, void *value);
/* Tell what "node" maps to in table "t" */
void *G_look(G_table t, G_node node);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -