在C中实现单个链表时,我认为有三种方式:
HEADER是指向链接列表的第一个节点的指示符。
1.全局声明标题并使用函数void insert(int)
进行插入。这应该是标题是全局的。
2.在main
内部声明标头并使用函数node*insert(node*)
进行插入。由于所涉及的返回,这应该有效。
3. main
内的解读标题,并使用函数void insert(node**)
进行插入。
有时第二种方式即使没有涉及回报也能有效。为什么呢?
哪种方式更好?
如果涉及的函数是递归的,就像在树中哪种方法合适?
答案 0 :(得分:2)
您应该将数据结构封装在单个对象(头节点或包含它的结构)中,然后您可以让您的函数在该对象上工作。这意味着你的程序中可以有多个链表(不适用于全局头节点),你也可以将它传递给想要使用它的不同函数(没有数据结构没有点能够使用它。)
如果您的程序中存储了单个对象(头节点),则插入和删除函数不需要返回任何内容,因为您已经有一个指向表示链接列表的对象的指针。
答案 1 :(得分:0)
如果涉及的函数是递归的,就像在树中哪种方法合适?
这些函数应该不递归“在树中”。树的深度是O(logn),这意味着在许多情况下递归是合理的;链表的大小为O(n),这意味着递归很容易溢出堆栈。