C 语言中的链表实现选项



在C中实现单个链表时,我认为有三种方法:

标头是指向链表第一个节点

ITSELF.IT 指针。

1.全局声明标头并使用函数void insert(int)插入。这应该工作,因为标头是全局的。

2.在main内声明标头,并使用函数node*insert(node*)插入。由于涉及回报,这应该有效。

3.在main内声明标头并使用函数void insert(node**)插入。

有时,即使不涉及回报,第二种方法也有效。为什么?

哪种方法更好?

如果所涉及的函数是递归的,如树中,哪种方法合适?

应将数据结构封装在单个对象(头节点或包含它的结构)中,然后可以让函数处理该对象。这意味着你可以在程序中有多个链表(不适用于全局头节点),你也可以把它传递给想要使用它的不同函数(没有数据结构而不能使用它)。

如果将单个对象(头节点)存储在程序中,则插入和删除函数不需要返回任何内容,因为您已经有一个指向表示链表的对象的指针。

如果所涉及的函数是递归的,如树中,哪种方法合适?

这些函数不应该是递归的"就像在树中一样"。树的深度是 O(logn),这意味着递归在许多情况下是合理的;链表的大小为 O(n),这意味着递归很容易溢出堆栈。

相关内容

  • 没有找到相关文章

最新更新