如何在C中存储链表列表?
考虑如何在C中存储链表列表?,c,data-structures,linked-list,C,Data Structures,Linked List,考虑C中的许多链表。如以下代码所示: struct path { int node; struct path *next; }; 我想要很多这个链表。我怎么能得到它?例如: 1,2,3 1,5,6 1,3,5,7 这是我的链接列表的三个实例,我需要将它们及其大小存储在一个列表中 因此,我不知道如何将链表的许多实例存储到一个列表中(我应该使用另一个链表吗?)您的结构路径是一个整数链表。如果需要路径列表,也可以定义: struct path_list { struct path *path
C
中的许多链表。如以下代码所示:
struct path {
int node;
struct path *next;
};
我想要很多这个链表。我怎么能得到它?例如:
1,2,3
1,5,6
1,3,5,7
这是我的链接列表的三个实例,我需要将它们及其大小存储在一个列表中
因此,我不知道如何将链表的许多实例存储到一个列表中(我应该使用另一个链表吗?)您的结构路径是一个整数链表。如果需要路径列表,也可以定义:
struct path_list {
struct path *path;
int path_size; /* optional: a place to store the size of "path" rather than recomputing it all the time */
struct path_list *next;
};
要使用任何类型的链表,通常需要定义分配/释放/操作/查询列表的函数。所以你可能有
struct path *new_path_el(int node, struct path *next) {
struct path *rv = malloc(sizeof(struct path));
rv->node = node;
rv->next = next;
return rv; }
int path_size(struct path *path) {
int rv = 0;
while (path) {
++rv;
path = path->next; }
return rv; }
struct path_list *new_path_list_el(struct path *path, struct path_list *next) {
struct path_list *rv = malloc(sizeof(struct path_list));
rv->path = path;
rv->path_size = path_size(path);
rv->next = next;
return rv; }
这允许您创建上面的示例:
new_path_list_el(
new_path_el(1, new_path_el(2, new_path_el(3, 0))),
new_path_list_el(
new_path_el(1, new_path_el(5, new_path_el(6, 0))),
new_path_list_el(
new_path_el(1, new_path_el(3, new_path_el(5, new_path_el(7, 0)))), 0)))
谷歌搜索“邻接矩阵”@MichaelWalz我知道Adj。矩阵和Adj。列表我使用CSR表示来存储图形。那么CSR有什么问题吗?@MichaelWalz我使用CSR来发现我的图形。我想找到一些路径并将其存储在列表中。抱歉,问题太广泛。是否可以根据大小对路径列表进行排序?如何打印列表?它不需要头和尾指针吗?