帮我写一串c语言代码,/*将指针P所指向的元素删除并返回true。若参数P指向非法位置,则打印“Wrong Position for Deletion\n”并返回false。*/ bool Delete( LinkList &L, LNode* P ) {
时间: 2024-09-19 18:09:57 浏览: 60
以下是用于实现指定功能的 C 语言代码:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义链表节点结构
typedef struct Node {
int data;
struct Node* next;
} LNode;
// 链表结构体
typedef struct List {
LNode* head;
} LinkList;
// 删除链表节点函数
bool Delete(LinkList& L, LNode* P) {
if (!P || !P->next) { // 检查是否为头结点或空节点
printf("Wrong Position for Deletion\n");
return false;
}
// 将前一个节点的 next 指向 P 的下一个节点
LNode* prev = L.head;
while (prev->next != P) {
prev = prev->next;
}
if (prev == NULL) {
// 如果 P 是头结点,直接设置头结点为下一个节点
L.head = P->next;
} else {
prev->next = P->next; // 替换前一个节点的 next 指针
}
free(P); // 释放已删除节点的内存
return true;
}
// 示例链表操作
int main() {
// 初始化链表示例...
LList L;
// ...链表操作...
// 使用 Delete 函数删除某个节点
LNode* nodeToDelete = ...; // 获取要删除的节点指针
bool success = Delete(L, nodeToDelete);
if (success) {
printf("Deletion successful.\n");
}
return 0;
}
阅读全文