【发布时间】:2011-03-01 11:21:44
【问题描述】:
我的问题很简单,可以使用 C++ 实现链接列表数据结构而不使用指针(下一个节点)吗?为了进一步限定我的问题,我的意思是可以仅使用类实例化来创建链接列表数据结构。
一个常见的节点定义可能是这样的:
template<typename T>
struct node
{
T t;
node<T>* next;
node<T>* prev;
};
我知道std::list 等,我只是想知道它是否可能——如果是的话怎么办?代码示例将不胜感激。
更多说明:
- 插入应该是 O(1)。
- 遍历不应超过 O(n)。
- 真实节点和空节点应该是可区分的。
- 链接列表的大小应仅受可用内存量的限制。
【问题讨论】:
-
@Mike Atlas:不只是好奇。
-
我认为使用像
auto_ptr或shared_ptr这样的智能指针会作弊。 -
@Ken:他们会破坏问题的目的。
-
我假设在规则 4 中,受到可用运行时堆栈空间量的限制是有效的。
-
他只是想出了规则列表,因为他不明白我的回答。 (他在我的解决方案中询问了这两件事在他将规则列表添加到问题中。)
标签: c++ pointers linked-list