实现 int Delete_Linked_Node(Linked_Node *L, int i)方法,删除单链表L的第i个数据元素(i为逻辑位置),并返回删除操作是否成功(返回0表示成功,返回-1表示不成功)
时间: 2024-11-03 14:22:45 浏览: 15
在C++或类似语言中,实现`Delete_Linked_Node`这个方法通常涉及遍历单链表、找到需要删除的节点以及处理特殊情况。这里是一个基本步骤的伪代码描述:
```cpp
// 定义链表节点结构体
struct ListNode {
int data;
ListNode* next;
};
int Delete_Linked_Node(ListNode** L, int i) {
// 检查输入有效性
if (*L == nullptr || i < 0) {
return -1; // 如果链表为空或i无效,直接返回-1
}
// 头结点处理
if (i == 0) {
ListNode* temp = *L;
*L = (*L)->next;
delete temp;
return 0; // 删除头结点,返回0表示成功
}
ListNode* current = *L;
ListNode* previous = nullptr;
for (int j = 0; j < i - 1 && current != nullptr; ++j) {
previous = current;
current = current->next;
}
// 找到需要删除的节点
if (current == nullptr) {
return -1; // 如果未到达第i个节点,说明越界,返回-1
}
previous->next = current->next;
delete current;
return 0; // 成功删除节点,返回0
}
阅读全文