0

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

标题本身是一个指针。它指向链接列表的第一个节点。

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

2.在里面声明标题main并使用函数node*insert(node*)插入。这应该可以工作,因为涉及到返回。

3.Declare header insidemain并使用函数void insert(node**)插入。

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

哪个是更好的方法?

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

4

2 回答 2

2

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

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

于 2013-09-21T17:04:24.190 回答
0

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

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

于 2013-09-21T17:12:50.413 回答