2012-11-27 39 views
0

你將如何去實現一個非模板C++ linkedList中的查找功能?鏈接列表查找函數C++

刪除功能的實現方式是:

bool LinkedList::remove(Node* n) 
{ 
     Node *temp = front, *prev = 0; 

     for(int i = 0;i < size; i++) 
     { 
      if (temp == n) 
      { 
       if (temp == front) 
       { 
        front = n->next; 
       } 
       else 
       { 
        prev->next = temp->next; 
       } 

       delete temp; 
       size --; 
       return true; 
      } 
      prev = temp; 
      temp = temp->next; 
    } 
    return false; 
} 
+1

逐個查看列表,並檢查您所在的節點是否與您正在查找的節點比較。 'if(current == tofind)break;'或者什麼 –

+3

我不會......我會使用'std :: list'(如果我真的必須使用一個列表)並使用'std :: find'。 –

+0

什麼具有查找功能的刪除功能? find函數的參數是什麼?一個Node *就像remove函數一樣?還是與節點的價值進行比較的價值?甚至是一個謂詞函數? –

回答

1

這裏是一個暗示:在remove()功能已經做幾乎一切find()需要做。你只需要弄清楚哪些位需要保留,哪些需要清除。如果有的話,你需要添加的東西將會很少。它將取決於您未指定的find()的API。