在 C 中实现链表的设计选择

Design choices implementing linked list in C

我希望这个问题对于本网站的格式来说不会太开放。我是 C 语言的新手,喜欢玩弄它来学习它的复杂性。我目前的 "task" 正在构建一个单链表。

这是我的设置:我的链表程序的第一次迭代将所有节点存储在一个连续的内存块中。这需要为我的推送和弹出功能重新分配。

但是,当我开始使用 realloc 时,我决定尝试一种新设计,在创建或删除单个节点时分别调用 malloc 和 free。我读过,在更大的范围内,这可能会对程序造成很大的阻碍。

哪种方式更好,第一种还是第二种?还是这两种想法都适用于某些实现?如果这太宽泛,请原谅我,我只是想检查一下我的理解并真正学习设计程序。

你的第二种方式是'classic'链表。依次 malloc 每个节点。每个节点都有一个指向下一个节点的指针。最后一个有一个空的下一个指针。你有一个指向第一个节点的根指针

这没有规模问题;现代堆管理器非常高效。然而,存在大脑规模问题。您需要编写干净整洁的代码,以免泄漏或崩溃:-)

如果您在 linux 上执行此操作,请了解如何使用名为 valgrind 的工具。 (当然还要学习如何使用 gdb)