如何在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来发现我的图形。我想找到一些路径并将其存储在列表中。抱歉,问题太广泛。是否可以根据大小对路径列表进行排序?如何打印列表?它不需要头和尾指针吗?