链接列表是一系列数据结构,它们通过链接连接在一起.
链接列表是包含项目的链接序列.每个链接包含与另一个链接的连接.链表是数组后第二常用的数据结构.以下是理解链接列表概念的重要术语.
链接 : 链表的每个链接都可以存储一个名为元素的数据.
下一步 : 链接列表的每个链接都包含指向下一个链接的链接.
LinkedList : 链接列表包含指向名为First的第一个链接的连接链接.
链接列表可以显示为一个节点链,其中每个节点都指向下一个节点.
根据上图,以下是需要考虑的重点.
Linked List包含一个名为first的链接元素.
每个链接都带有一个数据字段和一个名为next的链接字段.
每个链接都使用下一个链接与下一个链接相关联.
最后一个链接带有一个链接null以标记列表的结尾.
以下是各种类型的链表.
简单链接列表 : 物品导航仅限于转发.
双重链接列表 : 可以向前和向后导航项目.
循环链接列表 : 最后一项包含第一个元素的链接作为next,第一个元素具有指向前一个元素的链接.
以下是列表支持的基本操作.
插入 : 在列表的开头添加一个元素.
删除 : 删除列表开头的元素.
显示 : 显示完整列表.
搜索 : 使用给定的密钥搜索元素.
删除 : 使用给定键删除元素.
在链接中添加新节点list是一个不止一步的活动.我们将在这里用图表来学习.首先,使用相同的结构创建一个节点,并找到它必须插入的位置.
想象一下,我们在 A (LeftNode)和 C B (NewNode)>(RightNode).然后将B.next指向C :
NewNode.next - > RightNode;
它应该看起来像这样 :
现在,左边的下一个节点应该指向新节点.
LeftNode.next - > NewNode;
这将把新节点放在两个中间.新列表应如下所示;
如果在列表的开头插入节点,则应采取类似的步骤.在末尾插入时,列表的倒数第二个节点应指向新节点,新节点将指向NULL.
删除也是一个不止一步的过程.我们将学习图画表达.首先,使用搜索算法找到要删除的目标节点.
目标节点的左(上一个)节点现在应该指向目标节点的下一个节点 :
LeftNode.next - > TargetNode.next;
这将删除指向目标节点的链接.现在,使用以下代码,我们将删除目标节点指向的内容.
TargetNode.next - >空值;
我们需要使用已删除的节点.我们可以将其保留在内存中,否则我们可以简单地释放内存并完全擦除目标节点.
此操作是彻底的.我们需要让头节点指向最后一个节点并反转整个链表.
首先,我们遍历到列表的末尾.它应该指向NULL.现在,我们将指向它的前一个节点 :
我们必须确保最后一个节点不是丢失的节点.所以我们将有一些临时节点,它看起来像指向最后一个节点的头节点.现在,我们将使所有左侧节点逐个指向它们之前的节点.
除了头节点指向的节点(第一个节点)之外,所有节点都应指向它们的前任,使它们成为新的后继节点.第一个节点将指向NULL.
我们将使用temp节点使head节点指向新的第一个节点.
链接列表现在已反转.要查看C编程语言中的链接列表实现.