[英]Linked List Implementation Options in C
在C中实现单个链表时,我认为有三种方法:
HEADER是指向链接列表的第一个节点的指示符。
1.全局声明头部并使用函数void insert(int)
进行void insert(int)
这应该起到头部全局的作用。
2.Declare header in main
和use function node*insert(node*)
insert.This应该工作,因为涉及的返回。
3.Declare头内的main
和使用函数void insert(node**)
来插入。
有时第二种方式即使没有涉及回报也能有效。 为什么?
哪种方式更好?
如果涉及的函数是递归的,就像在树中哪种方法合适?
您应该将数据结构封装在单个对象(头节点或包含它的结构)中,然后您可以让您的函数在该对象上工作。 这意味着你的程序中可以有多个链表(不适用于全局头节点),你也可以将它传递给想要使用它的不同函数(没有数据结构没有点能够使用它)。
如果您的程序中存储了单个对象(头节点),则插入和删除函数不需要返回任何内容,因为您已经有一个指向表示链接列表的对象的指针。
如果涉及的函数是递归的,就像在树中哪种方法合适?
这些函数不应该像在树中那样递归递归。 树的深度是O(logn),这意味着在许多情况下递归是合理的; 链表的大小是O(n),这意味着递归很容易溢出堆栈。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.