2013-10-05 10 views
6

Per l'attuazione della lista collegata che è meglioStruttura o classe che è migliore per l'elenco collegato?

Utilizzando struttura

#include <iostream> 

using namespace std; 

struct Node { 
    int data; 
    Node* next; 
}; 

Utilizzando classe

class ListNodeClass 
    { 
    private: 
     ItemType Info; 
     ListNodeClass * Next; 
    public: 

     ListNodeClass(const ItemType & Item, ListNodeClass * NextPtr = NULL): 
     Info(Item), Next(NextPtr) 
      { 
      }; 
     void GetInfo(ItemType & TheInfo) const; 
    friend class ListClass; 
    }; 

typedef ListNodeClass * ListNodePtr; 

O è il loro modo di meglio per fare lista collegata in C++?

+0

'Per l'implementazione dell'elenco collegato che è migliore' - Dipende da cosa è possibile utilizzare meglio. Non vedo molta differenza. – Sadique

+1

'struct' e' class' sono funzionalmente equivalenti. – P0W

+1

A meno che tu non abbia davvero bisogno di implementare uno tu stesso, potresti anche dare un 'std :: list' o' std :: forward_list' un colpo –

risposta

3

L'unica cosa che class e struct marche differiscono in C++ è l'interfaccia predefinita. se si scrive:

struct MyStruct 
{ 
    int a; 
} 

e:

class MyClass 
{ 
    int a; 
} 

l'unica differenza è a campo in entrambi loro. Nel campo MyStruct il campo a è pubblico e nel campo MyClass è a privato. Ovviamente è possibile manipolarli usando le parole chiave public e private in entrambe le strutture.

Se stai programmando in C++ dovresti usare le classi.

2

Una lista collegata è una cosa, i suoi nodi sono un'altra cosa. I nodi fanno parte dell'implementazione della lista. Non dovrebbero essere visibili nell'interfaccia di una lista, quindi la loro forma non ha molta importanza. Vorrei farlo

class List 
{ 
private: 
    struct Node 
    { 
     int data; 
     Node* next; 
    }; 
public: 
    ... 
}; 
+0

@ san45 Questi sono argomenti di opinione, naturalmente, ma secondo me il punto importante è che il lo stesso autore sta scrivendo 'Node' e' List' quindi usando l'amicizia o getter e setter per il tipo di controllo a grana fine di cui si sta parlando non è necessario. – john

+0

puoi indicarmi un codice completo di operazioni con elenchi collegati in cpp perché ora sono confuso vedendo diversi frammenti ovunque? – san45

Problemi correlati