写出循环链表表尾插入结点代码
时间: 2024-11-22 19:41:36 浏览: 10
在C语言中,循环链表(Circular Linked List)是一种特殊的链表结构,其中最后一个节点的next指针指向第一个节点,形成一个环形。如果你想在循环链表的末尾插入一个新的节点,你可以使用以下步骤:
1. 创建新的节点(Node)
2. 将新节点的next指针设置为当前尾节点
3. 如果链表为空或头节点就是尾节点,则新节点同时成为头节点
4. 更新尾节点的指针
这里是一个简单的示例代码:
```c
// 假设我们有一个定义了结构体Node和头节点的循环链表
typedef struct Node {
int data;
struct Node* next;
} Node;
// 函数声明,插入新节点到尾部
void insertAtTail(Node** head, int value);
// 插入函数实现
void insertAtTail(Node** head, int value) {
// 检查链表是否为空
if (*head == NULL) {
// 如果为空,创建新节点并设置头尾为同一个节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = newNode;
*head = newNode;
return;
} else {
// 非空链表情况下,从头开始遍历找到尾部
Node* current = *head;
while (current->next != *head) {
current = current->next;
}
// 插入新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = *head; // 新节点的next指向头节点,形成循环
current->next = newNode; // 更新尾节点的next指针
}
}
// 使用示例
int main() {
Node* head = NULL;
insertAtTail(&head, 5); // 插入5
insertAtTail(&head, 10); // 插入10
// ...
return 0;
}
```
阅读全文