写个循环单链表的插入的代码
时间: 2024-01-01 11:20:31 浏览: 51
循环单链表的插入操作可以分为两种情况:在链表头部插入和在链表中间或尾部插入。具体代码如下:
在链表头部插入:
```
void insertAtHead(Node** head_ref, int new_data) {
Node* new_node = new Node(); // 创建新节点
new_node->data = new_data; // 给新节点赋值
if (*head_ref == NULL) { // 如果链表为空
*head_ref = new_node; // 直接将新节点作为头节点
new_node->next = *head_ref; // 将新节点的next指向自己,形成循环
} else { // 如果链表不为空
Node* last = *head_ref; // 找到链表的尾节点
while (last->next != *head_ref) {
last = last->next;
}
new_node->next = *head_ref; // 将新节点的next指向头节点
*head_ref = new_node; // 将新节点作为头节点
last->next = *head_ref; // 将尾节点的next指向新的头节点,形成循环
}
}
```
在链表中间或尾部插入:
```
void insertAfter(Node* prev_node, int new_data) {
if (prev_node == NULL) { // 如果前一个节点为空,无法插入
return;
}
Node* new_node = new Node(); // 创建新节点
new_node->data = new_data; // 给新节点赋值
new_node->next = prev_node->next; // 将新节点的next指向前一个节点的next
prev_node->next = new_node; // 将前一个节点的next指向新节点
}
```