c语言单链表删去首源节点
时间: 2024-10-16 07:01:49 浏览: 30
在C语言中,如果你有一个单向链表并想要删除它的头结点(也称为首元素),通常有两种情况,取决于链表是否为空:
1. **非空链表**:
如果链表非空,你可以通过修改头指针(`head`)指向下一个节点来实现。假设头结点是`node`,下一个节点是`next`,操作如下:
```c
if (node != NULL) {
node = node->next; // 将头指针更新为下一个节点
}
```
2. **空链表**:
如果链表为空,直接对`head`赋NULL即可,因为试图访问一个不存在的节点会导致错误:
```c
if (node == NULL) {
head = NULL;
}
```
请注意,这里假设`head`始终指向链表的第一个元素,`node->next`指向链表的第二个元素。
**完整函数示例**:
```c
struct Node {
int data;
struct Node* next;
};
void deleteFirstNode(struct Node** head) {
if (*head != NULL) {
struct Node* temp = *head;
*head = (*head)->next;
free(temp); // 释放原头结点的内存
} else {
printf("List is empty.\n");
}
}
```
在上面的代码中,`struct Node** head`是一个指向指针的指针,这样可以在函数外部改变`head`的值。
阅读全文