作为标题,我有一个用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;
}
}
}
有人有更好的解决方案吗?请告诉我。 提前谢谢!
答案 0 :(得分:0)
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;
}