只带尾指针和头节点的循环单链表删除第一个节点 用c语言实现
时间: 2024-10-16 20:09:45 浏览: 30
C语言实现的循环单链表功能示例
在只带尾指针(仅保存最后一个节点的指针)和头节点的循环单链表中,删除第一个节点(也就是头节点)的 C 语言实现如下:
```c
// 定义链表节点结构
typedef struct Node {
int data;
struct Node *next;
} Node;
// 删除头节点函数
void deleteFirst(Node **head) {
// 检查链表是否为空
if (*head == NULL) {
return;
}
// 如果只有一个节点,同时是头节点和尾节点,更新尾指针为NULL
if (*head == (*head)->next) {
*head = NULL;
return;
}
// 更新头节点的下一个节点作为新的头节点
Node *temp = (*head)->next;
*head = temp;
}
```
在这个函数中,`deleteFirst` 接收一个指向指针的指针(`Node **head`),因为我们需要修改传入的头节点指针。函数内部,我们首先判断头节点是否存在,然后处理特殊情况(单节点链表)。最后,我们将头节点的下一个节点指向 `temp`,完成头节点的删除。
阅读全文