如何遍历多级链接列表?

时间:2019-06-09 10:39:08

标签: c linked-list

我正在编写一个C程序来保存公司中经理和员工的数据。

该结构是一个多级链接列表。 每个经理可以包含内部经理和员工。

这是结构

typedef struct Node {
    char* name;
    NODE* next;
    NODE* down;
        NODE* parent; 
    int is_manager;
} NODE;

在我的程序中,我想遍历结构,以便我可以找到特定的员工,向他们添加数据,删除他们等。

添加/删除功能很简单-但是我在如何遍历和搜索此结构方面陷入困境。

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

扩展我的示例:

void print_node(NODE *node)
{
    // Tread node as the head of a list, and iterate over that list the "normal" way
    while (node)
    {
        // But also go down the "tree"...
        if (node->down)
        {
            print_node(node->down);
        }

        // Print the name
        printf("%s ", node->name);

        // And go to the next node in the list
        node = node->next;
    }
}

在遵循the advice by jdweng之后,您应该不难发现这一点。使用笔和纸将其全部绘制出来,然后按照“手动”方式打印该树。