📅  最后修改于: 2021-01-11 06:42:50             🧑  作者: Mango
循环链表是链表的一种变体,其中第一个元素指向最后一个元素,最后一个元素指向第一个元素。单链表和双链表都可以制成循环链表。
在单链列表中,最后一个节点的下一个指针指向第一个节点。
在双向链表中,最后一个节点的下一个指针指向第一个节点,第一个节点的前一个指针指向在两个方向上都形成圆形的最后一个节点。
根据上面的说明,以下是要考虑的重点。
无论是单链列表还是双链列表,最后一个链接的下一个都指向列表的第一个链接。
如果是双向链接列表,则第一个链接的前一个指向列表的最后一个。
以下是通告列表支持的重要操作。
插入-插入一个元素在列表的开始。
从列表中删除开头的元素-删除。
display-显示列表。
以下代码演示了基于单个链表的循环链表中的插入操作。
insertFirst(data):
Begin
create a new node
node -> data := data
if the list is empty, then
head := node
next of node = head
else
temp := head
while next of temp is not head, do
temp := next of temp
done
next of node := head
next of temp := node
head := node
end if
End
以下代码演示了基于单个链表的循环链表中的删除操作。
deleteFirst():
Begin
if head is null, then
it is Underflow and return
else if next of head = head, then
head := null
deallocate head
else
ptr := head
while next of ptr is not head, do
ptr := next of ptr
next of ptr = next of head
deallocate head
head := next of ptr
end if
End
以下代码演示了循环链接列表中的显示列表操作。
display():
Begin
if head is null, then
Nothing to print and return
else
ptr := head
while next of ptr is not head, do
display data of ptr
ptr := next of ptr
display data of ptr
end if
End
要了解其以C编程语言实现的信息,请单击此处。