C++中如何实现尾插法建立单循环链表
时间: 2024-09-26 08:02:49 浏览: 31
用C++实现的循环链表
在C++中,尾插法(Tail Insertion)用于构建单循环链表的一种常见方法是通过迭代的方式,在链表的最后一个节点之后插入新元素。这里有一个简单的示例:
```cpp
#include <iostream>
// 定义链表节点结构
struct Node {
int data;
Node* next;
};
// 创建一个新的节点并添加到链表尾部
Node* tailInsert(Node* head, int data) {
// 如果链表为空
if (head == nullptr) {
return new Node{data, nullptr}; // 新建头节点并返回
}
// 找到链表的最后一个节点
Node* current = head;
while (current->next != head) {
current = current->next;
}
// 插入新节点
Node* newNode = new Node{data, current};
current->next = newNode; // 更新最后一个节点的next指针
return head; // 返回链表头部
}
int main() {
Node* head = nullptr; // 初始化空链表
head = tailInsert(head, 1); // 插入第一个元素
head = tailInsert(head, 2);
head = tailInsert(head, 3);
// 打印链表(由于是循环链表,会无限循环)
Node* temp = head;
do {
std::cout << temp->data << " -> ";
temp = temp->next;
} while (temp != head);
return 0;
}
```
在这个例子中,`tailInsert`函数接收链表的头节点和要插入的数据,创建新节点并将它链接到当前链表的末尾。主函数中展示了如何初始化一个空链表,并通过调用`tailInsert`来逐步填充。
阅读全文