2014-01-12 118 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)