如何在带有负键的节点之前删除节点A链接列表
How to delete the node immediately preceding a node with a negative key a linked list
作为标题,我在C 中实现了一个链接列表。现在,我想删除带有负键的任何节点之前的所有节点。我使用3个节点指针: *prevNode
,*currNode
和*nextNode
遍历列表。每当我发现*nextNode
中的密钥是<0,我删除*currNode
并继续到达列表的末尾。删除节点时,我还检查它是否是列表中的第一个节点。
这是我的C 代码:
void deletePrecedingNegative(LinkedList *l){
Node *prevNode=NULL;
Node *currNode=l->head;
Node *nextNode=NULL;
while(currNode->next){
nextNode = currNode->next;
if(nextNode->data < 0){
if(currNode == l->head){
l->head = nextNode;
delete currNode;
currNode = nextNode;
}
else{
prevNode->next = nextNode;
delete currNode;
currNode = nextNode;
}
}
else{
prevNode = currNode;
currNode = nextNode;
}
}
}
有人有更好的解决方案吗?请告诉我。预先感谢!
如果它删除了持有负键的节点之前的所有节点,则意味着删除所有节点,先于最后一个节点持有负键。
void DeleteNodesPreceedinglastNegative(LinkedList* l)
{
Node *currNode=l->head;
Node *tempNode=l->head;
while(tempNode->Next)
{
tempNode = tempNode->Next;
if(tempNode->Data < 0)
{
while(currNode != tempNode)
{
l->head = currNode->Next;
delete currNode;
currNode = l->head;
}
}
}
currNode = NULL;
tempNode = NULL;
}
相关文章:
- 为什么我的删除节点函数实际上没有删除节点?
- 我们可以删除链表中静态内存中的节点吗
- 为什么"delete"关键字不删除节点?
- 为什么我的双向链表删除函数会删除多个节点?
- 编写一个函数来删除单链表中的节点(尾部除外),仅授予对该节点的访问权限
- 删除 XML 文件中的子节点C++
- 创建了一个链表,但如何删除 c++ 中的"所有"节点
- 从unordered_map中删除单个节点
- 删除链表中的特定节点
- 在C++中删除双向链表的头节点后出现访问冲突异常
- 删除链表中的节点 - 分段错误
- 删除链接列表中剩余的最后一个节点
- 避免在使用链接列表从 deque 中删除最后一个节点时出现内存泄漏
- 使用函数引用指向节点的指针删除链表中的节点?
- 双向链表 - 无法删除第一个节点
- 双向链表 std::unique_ptr 类在节点删除时无法按预期工作
- BST 节点删除 - 指针未正确删除
- 节点删除功能的链表问题
- 布尔函数始终为真,单向链表中的尾节点删除创建无限循环
- AVL树中节点删除值异常