我需要遍歷單鏈表並查找否定節點,刪除它們並返回刪除節點的數量。在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「 –