带结构或类的链接列表实现?

时间:2011-08-12 14:08:51

标签: c++ data-structures singly-linked-list

我正在使用C ++开始数据结构,在阅读时,我找到了以下代码段,

template <class Node_entry>
struct Node {
// data members
Node_entry entry;
Node<Node_entry> *next;
// constructors
Node( );
Node(Node_entry, Node<Node_entry> *link = NULL);
};

任何人都可以详细说明为什么作者选择一个结构而不是一个类来实现singly linked list?感谢。

7 个答案:

答案 0 :(得分:4)

他希望默认访问是公开的 - 这是C ++中类和结构之间的唯一区别

答案 1 :(得分:3)

可能因为struct默认情况下所有成员都是public。在class中,默认为private

如果作者选择class,他会写下这个:

template <class Node_entry>
class Node {
public: // note this! <------------
// data members
Node_entry entry;
Node<Node_entry> *next;
// constructors
Node( );
Node(Node_entry, Node<Node_entry> *link = NULL);
};

答案 2 :(得分:1)

structclass都定义了类,并且可以包含方法,成员,构造函数等。

唯一的区别是结构成员默认是公共的,并且这些结构默认公开继承。

请参阅this question

答案 3 :(得分:1)

默认情况下,struct的成员为public,即对其他所有人都可见,而class的成员默认为private。这是两个关键词之间的唯一区别(我相信)。

答案 4 :(得分:1)

从算法和数据结构的角度来看,使用结构或类之间没有区别!谈论算法或数据结构的书籍并不关心OOP,例如,在Introduction to Algorithms中他们使用的是pascal,有时也使用伪代码。重要的是提供这个想法。作者可能会选择使用结构,因为他不想打扰读者关于OOP原则和最佳实践,他不希望你说嘿他为什么将这个领域定义为公开而非私人定制者和吸气剂。通过这种方式,您远离数据结构和算法。

答案 5 :(得分:0)

可能是因为他/她想教授算法和数据结构,并且不想分散OO设计问题。

答案 6 :(得分:0)

如果你是从算法和数据结构的角度来看,一切都很好,但是当涉及到结构的生产成员时,结构的成员是公共的,因此对外部的所有内容都是可见的,但类在默认情况下是私有的