2013-10-05 24 views
6

Dla realizacji połączonej listy, który jest lepszyStruktura lub klasa, która jest lepsza na liście połączonej?

Korzystanie struktura

#include <iostream> 

using namespace std; 

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

Korzystanie klasa

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; 

Albo jest ich lepszy sposób dla prowadzenia połączonej listy w C++?

+0

'Za wdrożenie listy połączonej, która jest lepsza" - zależy od tego, co można lepiej wykorzystać. Nie widzę dużej różnicy. – Sadique

+1

'struct' i' class' są funkcjonalnie równoważne. – P0W

+1

Jeśli naprawdę nie musisz implementować go samodzielnie, możesz również podać 'std :: list' lub' std :: forward_list' strzał –

Odpowiedz

3

jedynym rzeczy, które class i struct marki różnią się C++ jest domyślny interfejs. jeśli piszesz:

struct MyStruct 
{ 
    int a; 
} 

oraz:

class MyClass 
{ 
    int a; 
} 

jedyna różnica polega na tym polu zarówno a nich. W polu MyStruct jest publicznie dostępne, aw polu MyClass jest prywatne. Oczywiście można nimi manipulować przy użyciu słów kluczowych public i zarówno w klasach jak i klasach.

Jeśli programujesz w C++, powinieneś używać klas.

2

Połączona lista to jedno, jej węzły to kolejna rzecz. Węzły są częścią implementacji listy. Nie powinny być widoczne w interfejsie listy, więc ich forma nie ma znaczenia. Chciałbym to zrobić

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

@ san45 Oczywiście są to kwestie o znaczeniu, ale moim zdaniem ważne jest to, że ten sam pisarz pisze 'Węzeł' i' List', dlatego używanie przyjaźni lub modułów pobierających i pobierających dla rodzaju kontroli drobnoziarnistej, o której mówisz, jest niepotrzebne. – john

+0

czy możesz wskazać mi pełny kod operacji na połączonych listach w cpp, ponieważ teraz jestem zdezorientowany widząc wszędzie różne fragmenty? – san45

Powiązane problemy