我必须在C中创建一个动态链接列表,但是我不确定我到底要做什么。什么是动态的?它是一个列表,您知道要在哪里找到哪个节点(每个节点的* p数组?但是以此方式,它仍被视为链接列表吗?)或类似每个节点的下一个和上一个节点都有* p的东西?或者,如果用户说他想知道节点的确切位置,是否有办法精确到达该位置?
答案 0 :(得分:1)
在C语言中,单词 dynamic 通常表示从堆中分配的 ,而 static 则是指定义和/或定义的全局对象在编译时初始化。
我个人从未使用过动态链表一词。在运行时从堆中分配列表项似乎很自然(因此动态分配)。但是可以定义在编译时链接为列表的静态对象。在某些情况下,我可能会使用这种方法。
可以在列表中使用第三种对象:具有自动存储的节点,这些节点被定义为局部变量。这是可能的,但非常棘手,因为这些对象在函数退出时超出范围,因此如果列表仍然链接到它们,则该列表将变为无效。
结论是,您希望处理的列表类型只是普通香草链接列表,其节点从头开始分配的节点是malloc
或calloc
,而释放的节点是free
丢弃时。