指针可以是数据结构吗?

时间:2012-05-01 14:10:48

标签: c++

指针可以被认为是一种有效且语义明智的数据结构吗?如何对链表,哈希,queus,stack进行叠加?

3 个答案:

答案 0 :(得分:8)

不,指针只是一种类型,而不是一种结构。结构的实现是类型(std::vectorstd::map,...),但指针不是。

它们通常在您枚举的结构的实现内部使用,但本身,指针不是结构。

答案 1 :(得分:0)

指针是数据类型,而不是数据结构(虽然一些术语相当松散的书籍会将基本类型定义为指针作为较大数据结构集的元素;无论如何,指针肯定不是抽象数据结构的一个例子。)

更有针对性的是,大多数抽象数据结构的C ++实现(如链表,队列,堆栈,树等)都将使用指针作为数据成员;也就是说,指针将构成实现的一部分;它们不是实现本身。

例如,如果您正在考虑实现自己的链接列表,则可以选择具有双重链接的版本,其中列表中的每个元素由包含指向上一个和下一个节点的指针的节点表示: / p>

template <typename T>
class DLList
{
public:
    // Lots of things
private:
    Node* _head; // Pointer to the head of the list
    Node* _tail; // Pointer to the tail of the list
};

您的节点可能会像这样实现:

template <typename T>
struct Node {
    Node* _prev;
    Node* _next;
    T     _data;
};

答案 2 :(得分:0)

数据结构是在计算机中存储和组织数据的特定方式,以便可以有效地使用它。指针确实是存储和组织数据的一种非常有效的方式,并且是目前解决内存的主要方式。但这不是唯一的方法。例如,CPU寄存器的处理方式不同。所以第一个问题的答案是肯定的。

至于你的第二个问题,你无法真正比​​较指针与更高级别的数据结构,如散列,队列,堆栈等。这是两个不同的抽象层次。使用较低级别的数据结构(如指针)实现更高级别的容器。