我需要遍历单链表并查找否定节点,删除它们并返回删除节点的数量。在SLL中查找负值
这是代码我有这么远,但我总是计数器= 1从功能
返回这有什么错在for循环和if语句,或者是别的东西
bool IntSLList::DeleteNegativeNodes()
{
int counter=0;
if(IsEmpty() == true)
counter++;
if(head->val<0)
{
DeleteFromHead();
counter++;
}
if(tail->val<0)
{
DeleteFromTail();
counter++;
}
IntSLLNode *node, *pred, *tmp;
node = pred = NULL;
for(pred = head, node = head->next;
node != NULL;
node = node->next, pred = pred->next)
{
if(node->val<0)
{
node->flag = 1;
}
}
for(tmp = head; tmp != NULL; tmp = tmp->next)
{
if(tmp->flag==1)
counter++;
delete tmp;
}
return counter;
}
int main()
{
int n,x,z;
IntSLList list1;
cout <<"Insert number of nodes u'd like inserted in list" << endl;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> x;
list1.AddToTail(x);
}
z=list1.DeleteNegativeNodes();
cout << "Number of negative deletes nodes is : " << z << endl;
}
也许使计数器静态或全局变量将有所帮助,但是如果你在同一个程序中多次使用它,你不得不重新初始化它。 – monster
'DeleteNegativeNodes'删除列表中的所有节点,并用' tmp-> flag == 1' at'for(tmp = head' ...'loop。你在'if'语句中忘了'{}' – Nikita
没有改变任何东西,我仍然得到“Number of negative删除节点是:1“ –