删除链表的头节点
时间: 2023-07-10 16:22:06 浏览: 91
要删除链表的头节点,需要进行以下操作:
1. 判断链表是否为空,如果为空则无法删除。
2. 如果链表不为空,将头节点的下一个节点设为新的头节点。
3. 释放原头节点的空间。
具体实现可以参考以下代码(假设链表的节点类型为`ListNode`):
```
void deleteHeadNode(ListNode* &head) {
if (head == nullptr) {
return; // 链表为空,无法删除
}
ListNode* newHead = head->next; // 新的头节点为原头节点的下一个节点
delete head; // 释放原头节点的空间
head = newHead; // 更新头节点
}
```
相关问题
删除链表的节点
要删除链表中的一个节点,需要先找到该节点的前一个节点,然后修改前一个节点的指针,使其指向该节点的下一个节点。如果要删除的节点是头节点,则需要特殊处理,直接将头节点指向下一个节点即可。
以下是一个 C++ 实现的例子:
```cpp
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* deleteNode(ListNode* head, int val) {
if (head == NULL) {
return NULL;
}
if (head->val == val) {
ListNode* tmp = head->next;
delete head;
return tmp;
}
ListNode* prev = head;
ListNode* cur = head->next;
while (cur != NULL && cur->val != val) {
prev = cur;
cur = cur->next;
}
if (cur != NULL) {
prev->next = cur->next;
delete cur;
}
return head;
}
```
这个函数接受一个链表的头节点和要删除的节点的值,返回删除后的链表的头节点。在函数中,我们先特判空链表和要删除的节点是头节点的情况。然后使用双指针法,找到要删除的节点的前一个节点。最后修改指针和删除节点即可。
删除链表所有节点C语言
struct ListNode* deleteNode(struct ListNode* head, int val){
// 如果要删除的节点是头节点,则直接返回头节点的下一个节点
if(head->val == val){
return head->next;
}
struct ListNode* cur = head;
while(cur->next != NULL){
if(cur->next->val == val){
cur->next = cur->next->next;
break;
}
cur = cur->next;
}
return head;
}