2014-01-12 84 views
0

當使用存儲衆多對象的鏈接列表時,如何訪問所述對象中的數據?從鏈接列表中訪問對象(自定義實現)

示例代碼。

using namespace std; 

typedef struct node             
{                
    int data;    
    node* next;    
} *nodePtr; 

nodePtr head; 
nodePtr current; 
nodePtr temp; 

void PrintList() 
{ 
    current = head; 
    while(current != NULL) 
    { 
     cout << current->data.getMakeModel(); 
     cout << current->data.getRegNo(); 
     cout << current->data.getEngineSize(); 
     cout << current->data.getRented(); 

     current=current->next; 
    } 
} 

我目前的做法不起作用,我不確定如何解決它。

我需要做的就是訪問模板對象的數據成員,我有getter方法和輸出數據。

任何想法?

在附註中,是否可以在鏈接列表中搜索特定對象(具有特定數據成員值的對象)?仍然使用模板的對象當然是

回答

0

當使用存儲大量的對象你會如何去訪問裏面的數據表示對象的鏈接列表?

如果你有一個nodePtr你就必須做ptr->data訪問結構的int


我現在做不工作,我不知道如何解決這個問題的辦法。

您正試圖訪問類型爲int的對象上的成員函數,該對象沒有任何成員函數。您可能打算爲nodedata成員對象定義另一種類型。


在一個側面說明,這將是能夠搜索在鏈接列表中的特定對象(與特定的數據成員值的對象)?

當然,這樣的算法的實現是相當平凡的。你可以沿着線實現它:

nodePtr find(nodePtr head, int value) { 
    for (; head != NULL; head = head->next) 
     if (*head == value) 
      return first; 
    return NULL; 
} 

我的建議是使用標準std::forward_liststd::list。如果你這樣做,你可以使用std::find作爲「查找」算法。

0

這裏的probem是data的類型是int而不是類類型。您必須將其類型更改爲類型,例如Foo。更先進的解決方案將使用模板,使其與任意類型的工作(例如std::list


還注意到自己的類定義沒有考慮好作風。 (如果使用智能指針和引用計數廣泛合作e.g)

struct node             
{ 
    typedef node* Ptr; 

    Foo data;    
    node* next;    
}; 

雖然typedef只有在某些特殊情況下,合理的:我把它定義爲。在正常情況下應該用node*去(這也是小o.O)