使用C 在范围x1和x2中删除值的节点
Deleting Nodes of values in range x1 and x2 using C++
我正在尝试实现一个函数 DeleteNodes(T & val1, T & val2)
,该函数在范围内删除值的节点。当我运行程序时,会出现未经治疗的异常错误。我无法弄清楚我在实施中做错了什么。我使用的称为DeleteNode(T &val)
的定义函数删除所需的节点。谁能帮助我解决这种情况?
void DLList<T>::DeleteNodes(T & val1 ,T & val2)
{
if(IsEmpty())
return;
if(head == tail)
{
if(head->val >= val1 && head->val <= val2)
DeleteHead();
}
DLLNode <T> *p;
for(p = head ; p != NULL ; p = p->next)
{
if(p->val >= val1 && p->val <= val2)
{ T x = p->val;
DeleteNode(x);
}
}
}
对不起,这是我第一次提出这种类型的问题,我必须更具体,因为deletenode(t&amp; val)功能只是删除它一个所需的节点,对于deletenodes(t&amp; val1,t&amp; val2)函数,它删除了在val1和val2之间具有范围的所有节点,以下是deletenode()函数:
bool DLList<T>::DeleteNode(T& val)
{
bool found = false;
if(IsEmpty() == true)
return false;
if(val == head->val)
{
DeleteHead();
return true;
}
if(val == tail->val)
{
DeleteTail();
return true;
}
DLLNode<T> *node, *predNode, *succNode;
node = predNode = succNode = NULL;
//Traverse list to find the node to be deleted
for(node = head->next; node != NULL; node = node->next)
{
if(node->val == val)
{
found = true;
break;
}
}
if(found == true)
{
// Unlink deleted node from list
predNode = node->prev;
succNode = node->next;
predNode->next = node->next;
succNode->prev = node->prev;
delete node;
}
return found;
}
相关文章:
- 为什么我的删除节点函数实际上没有删除节点?
- 为什么"delete"关键字不删除节点?
- 以递归方式从链表中删除节点
- 根据 Pugixml 中的子值删除节点
- 基于给定字符串数据类型的链表删除节点
- 在双向链表中给定节点之后删除节点
- 如何在单链列表 c++ 中正确删除节点
- 在BST堆中删除节点免错误
- 为什么我的打印功能之一删除节点
- 重载运算符>>从二叉树中删除节点
- 删除节点方法实际上不会删除二叉搜索树中的节点.C++
- C bST删除节点会破坏排序算法
- 删除节点并处理新的 nullptr 和链接节点
- 如何从链表中删除节点
- 如何在用于删除节点的函数中检查我的链表是否C++为空
- 从BST删除节点时出错
- 二叉树,从树中删除节点后将其删除
- 链接列表删除节点C
- 在二进制搜索树中删除节点
- 使用类从双向链表中删除节点