📅  最后修改于: 2023-12-03 15:40:01.823000             🧑  作者: Mango
循环链表是一种特殊的链表,其中最后一个元素指向第一个元素,形成了一个循环。在循环链表中,末端插入新节点可以很方便地实现,在这篇文章中,我们将学习如何在循环链表的末端插入新节点。
在循环链表中末端插入新节点的算法比较简单,具体步骤如下:
以下是使用C++实现循环链表的末端插入新节点算法的代码:
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
void InsertAtEnd(ListNode** head_ref, int new_data) {
ListNode* new_node = new ListNode(new_data);
ListNode *last = *head_ref;
if (*head_ref == NULL)
{
*head_ref = new_node;
new_node->next = *head_ref;
return;
}
while (last->next != *head_ref)
last = last->next;
last->next = new_node;
new_node->next = *head_ref;
}
void printList(ListNode* head)
{
ListNode* temp = head;
if (head != NULL)
{
do
{
cout << temp->val << " ";
temp = temp->next;
}
while (temp != head);
}
}
int main()
{
ListNode* head = NULL;
InsertAtEnd(&head, 1);
InsertAtEnd(&head, 2);
InsertAtEnd(&head, 3);
InsertAtEnd(&head, 4);
InsertAtEnd(&head, 5);
cout << "Circular Linked List after inserting at the end: ";
printList(head);
return 0;
}
以上代码会输出以下结果:
Circular Linked List after inserting at the end: 1 2 3 4 5
在循环链表中末端插入新节点是非常简单的,只需要对链表最后一个节点的next指针进行操作即可。链接从链表的最后一个节点指向新节点,新节点的next指针指向链表的第一个节点。
在添加新节点之前需要对链表是否为空进行检查,如果链表为空,则新节点作为第一个节点,新节点的next指针指向自己。如果链表不为空,则需要遍历整个链表,找出最后一个节点。