2013-10-05 67 views
6

對於鏈表的實現,這是更好鏈接列表更好的結構還是類?

使用結構

#include <iostream> 

using namespace std; 

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

使用類

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; 

或者是在C++做鏈表他們沒有更好的辦法?

+0

'爲了實現更好的鏈表' - 取決於你可以更好地使用。我沒有看到太多的區別。 – Sadique

+1

'struct'和'class'在功能上是等價的。 – P0W

+1

除非你真的需要自己實現一個,否則你也可以給std :: list或std :: forward_list一個鏡頭 –

回答

3

的唯一一件事classstruct品牌用C++不同的是默認界面。如果你寫:

struct MyStruct 
{ 
    int a; 
} 

和:

class MyClass 
{ 
    int a; 
} 

唯一不同的是他們兩人a場。在MyStruct字段a是公開的,並在MyClass字段a是私人的。當然,您可以在結構和類中使用publicprivate關鍵字來操作它們。

如果你使用C++編程,你應該使用類。

2

鏈表是一回事,其節點是另一回事。節點是列表實現的一部分。它們不應該在列表的界面中可見,所以它們的形式並不重要。我會做這個

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

@ san45這些都是當然的意見,但在我看來,重要的一點是同樣的作者正在編寫'Node'和'List',因此使用友誼或getters和setter來實現你所談論的細粒度控制是不必要的。 – john

+0

你可以指點我一個完整的鏈接列表操作代碼在cpp中,因爲現在我很困惑,看到不同的片段到處都是? – san45