Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct node // структура ноды
- {
- char node_name; // имя ноды, номер (для удобства)
- char num_edge; // количество путей, выходящих из ноды
- struct edge *node_out; // пути которые выходят из ноды
- };
- struct edge // структура пути
- {
- char edge_name; // имя пути, номер (для удобства)
- char weight; // вес пути
- struct node *edge_out; // адрес ноды, на которую указывает путь
- };
- int ini_node(const char, struct node *, const char, const struct edge *, ...); // инициализация параметров ноды
- int ini_edge(const char, struct edge *, const char, const struct node *); // инициализация параметров пути
- // ==================================
- int main(void)
- {
- struct node point[5] = {}; // сеть с 5 нодами и 6 путями
- struct edge path[6] = {};
- // характер соединения ноды и путей
- ini_edge(0, &path[0], 5, &point[1]);
- ini_edge(1, &path[1], 5, &point[2]);
- ini_edge(2, &path[2], 5, &point[2]);
- ini_edge(3, &path[3], 5, &point[3]);
- ini_edge(4, &path[4], 5, &point[2]);
- ini_edge(5, &path[5], 5, &point[4]);
- ini_node(0, &point[0], 2, &path[0], &path[1]);
- ini_node(1, &point[1], 1, &path[2]);
- ini_node(2, &point[2], 1, &path[3]);
- ini_node(3, &point[3], 2, &path[4], &path[5]);
- ini_node(4, &point[4], 0, 0);
- return 0;
- }
- // ===================================
- int ini_node(const char name, struct node *mnode, const char mnum_edge, const struct edge *in_edge, ...)
- { // <имя ноды>, <адрес инициализируемой ноды>, <количество выходящих из ноды путей>, <адреса на эти пути>
- mnode->node_name = name;
- mnode->num_edge = mnum_edge;
- mnode->node_out = malloc(mnum_edge * sizeof(struct edge));
- for (size_t i = 0; i < mnum_edge; i++)
- {
- mnode->node_out[i] = in_edge[i];
- }
- return 0;
- }
- int ini_edge(const char name, struct edge *medge, const char edweight, const struct node *out)
- { // <имя пути>, <адрес инициализируемой пути>, <вес пути>, <адрес ноды, куда указывает путь>
- medge->edge_name = name;
- medge->weight = edweight;
- medge->edge_out = malloc(sizeof(struct node));
- medge->edge_out = out;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement