jes*_*iel 29 c++ stl linked-list list
如何在C++中创建列表?我需要它来创建一个链表.我该怎么做呢?我可以遵循哪些好的教程或示例?
Joh*_*itb 43
我认为你知道C++已经有了一个链表类,你想要实现自己的,因为你想学习如何去做.
首先,阅读为什么我们使用数组而不是其他数据结构?,其中包含基本数据结构的良好答案.然后考虑如何在C++中对它们进行建模:
struct Node {
int data;
Node * next;
};
Run Code Online (Sandbox Code Playgroud)
基本上,这就是实现列表所需的全部内容!(一个非常简单的).然而它没有抽象,你必须链接每手的项目:
Node a={1}, b={20, &a}, c={35, &b} d={42, &c};
Run Code Online (Sandbox Code Playgroud)
现在,您已经拥有了一个链接的节点列表,这些节点都在堆栈中分配:
d -> c -> b -> a
42 35 20 1
Run Code Online (Sandbox Code Playgroud)
下一步是编写一个List
指向起始节点的包装类,并允许根据需要添加节点,跟踪列表的头部(以下内容非常简化):
class List {
struct Node {
int data;
Node * next;
};
Node * head;
public:
List() {
head = NULL;
}
~List() {
while(head != NULL) {
Node * n = head->next;
delete head;
head = n;
}
}
void add(int value) {
Node * n = new Node;
n->data = value;
n->next = head;
head = n;
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
下一步是使List成为模板,以便您可以填充其他值(不仅仅是整数).
如果您熟悉智能指针,则可以替换使用智能指针的原始指针.通常我会发现人们会向初学者推荐智能指针.但在我看来,你应该先了解为什么你需要智能指针,然后使用它们.但这需要您首先了解原始指针.否则,你会使用一些神奇的工具,却不知道为什么需要它.
kar*_*erx 15
如果要使用std::list
,则需要传递类型参数:
list<int> intList;
list<int>* intListPtr = new list<int>;
Run Code Online (Sandbox Code Playgroud)
如果你想知道列表是如何工作的,我建议使用谷歌搜索一些C/C++教程来了解这个主题.然后,下一步将学习足够的C++来创建列表类,最后是列表模板类.
如果您有更多问题,请回复此处.
为什么重新发明轮子.只需使用STL列表容器即可.
#include <list>
// in some function, you now do...
std::list<int> mylist; // integer list
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
166541 次 |
最近记录: |