C++中如何实现头插法建立单循环链表?
时间: 2024-09-26 14:02:49 浏览: 44
用链表实现集合交并补等运算
C++中通过头插法(也称为链接节点到头部)来创建单循环链表可以这样操作:
```cpp
// 定义链表节点结构体
struct Node {
int data;
Node* next;
};
// 创建一个新的节点并插入链表头部
Node* createCycle(Node* head, int data) {
// 如果链表为空,直接创建新节点作为头
if (head == nullptr) {
head = new Node();
head->data = data;
head->next = head; // 自环
} else {
// 否则,在当前头节点之后插入新节点,并自环
Node* newNode = new Node();
newNode->data = data;
newNode->next = head->next;
head->next = newNode;
newNode->next = head; // 新节点指向头形成循环
}
return head;
}
// 示例:初始化空链表并添加元素
int main() {
Node* listHead = createCycle(nullptr, 1); // 添加第一个元素1
listHead = createCycle(listHead, 2); // 添加第二个元素2,形成循环
// ...
return 0;
}
```
在这个示例中,`createCycle` 函数接受链表头指针和要插入的数据,然后创建新节点,将其插入到链表中并将最后一个节点连接回头节点以形成循环。
阅读全文