帮我写一串c++代码 /*将指针P所指向的元素删除并返回true。若参数P指向非法位置,则打印“Wrong Position for Deletion\n”并返回false。*/ bool Delete( LinkList &L, LNode* P )
时间: 2024-09-19 13:10:00 浏览: 51
当然可以。这是一个简单的链表操作的例子,它实现了`Delete`函数,该函数用于从链表中删除指定节点,并处理边界条件。这里假设`LinkList`是一个包含`LNode`类型的单链表结构,`LNode`有一个`next`指针表示下一个节点:
```cpp
#include <iostream>
// 定义链表节点类型
struct LNode {
int data;
LNode* next; // 指向下一个节点的指针
};
// 链表类,包含必要的成员函数
class LinkList {
public:
bool Delete(LNode*& P) {
// 如果P为空或者P->next为空,说明非法删除
if (!P || !P->next) {
std::cout << "Wrong Position for Deletion\n";
return false;
}
// 找到待删除节点的前一个节点
LNode* prev = P;
while (P && P->next != P) {
prev = P;
P = P->next;
}
// 删除节点
if (prev)
prev->next = P->next;
else
// 如果P是头结点,直接改变头指针
L = P->next;
delete P; // 释放内存
return true;
}
private:
LNode* L; // 链表的头指针
};
int main() {
// 初始化链表...
LinkList L;
// 调用Delete函数删除节点...
LNode* P = ... // 设置需要删除的节点指针
bool result = L.Delete(P);
// 返回结果并处理其他逻辑...
return 0;
}
阅读全文