链接列表是使用指针实现的动态数据结构的最佳和最简单的示例。但是,了解指针对于理解链接列表的工作方式至关重要,因此如果您跳过指针教程,则应该返回并重做它。您还必须熟悉动态内存分配和结构。
从本质上讲,链接列表可以作为一个数组,可以根据需要从数组中的任何点进行增长和缩小。
链接列表比数组有一些优点:
1.可以从列表中间添加或删除项目
2.无需定义初始大小
但是,链表也有一些缺点:
1.没有“随机”访问 - 如果没有首先迭代所有项目直到该项目,就不可能到达数组中的第n个项目。这意味着我们必须从列表的开头开始,计算我们在列表中前进的次数,直到我们到达所需的项目。
2.需要动态内存分配和指针,这会使代码复杂化并增加内存泄漏和段错误的风险。
3.链表比数组有更大的开销,因为链表项是动态分配的(内存使用效率较低),列表中的每个项也必须存储一个额外的指针。
链表是一组动态分配的节点,以这样的方式排列,即每个节点包含一个值和一个指针。指针始终指向列表的下一个成员。如果指针为NULL,则它是列表中的最后一个节点。
使用指向列表的第一项的本地指针变量来保持链接列表。如果该指针也为NULL,则该列表被视为空。
--------------- ---------------
| | |