酷代码 AI
菜单
服务商

c语言有一个链表,写出删除节点的函数

以下是一个用 C 语言实现的删除链表节点的函数示例: ```c #include <stdio.h> #include <stdlib.h> // 链表节点结构体 typedef struct ListNode { int data; struct ListNode *next; // 构造函数,初始化节点 ListNode(int x) : data(x), next(NULL) {} } ListNode; // 删除指定节点的函数 void deleteNode(ListNode head, int val) { ListNode* temp = *head; ListNode* prev = NULL; // 如果头节点就是要删除的节点 if (temp!= NULL && temp->data == val) { *head = temp->next; free(temp); return; } // 遍历链表找到要删除的节点 while (temp!= NULL && temp->data!= val) { prev = temp; temp = temp->next; } // 如果没找到要删除的节点 if (temp == NULL) { printf("未找到要删除的节点\n"); return; } // 调整指针删除节点 prev->next = temp->next; free(temp); } int main() { // 测试代码 ListNode* head = new ListNode(1); ListNode* second = new ListNode(2); ListNode* third = new ListNode(3); head->next = second; second->next = third; deleteNode(&head, 2); // 遍历链表查看删除结果 ListNode* curr = head; while (curr!= NULL) { printf("%d ", curr->data); curr = curr->next; } return 0; } ``` 额外需要注意的逻辑点: 1. 处理删除头节点的情况时,要记得更新头指针。 2. 遍历链表时要确保不会出现越界访问。 3. 释放删除节点的内存时,要确保不会导致内存泄漏。 [2024-12-04 21:34:48 | AI写代码神器 | 471点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]