我目前正在编写一些代码。我正在努力学习;列表类";来自STL库的文件在引擎盖下工作。我似乎不太理解从用户创建的列表中删除节点的过程。有什么信息可以更好地帮助我理解这个问题吗。
#include <iostream>
#include <string>
using namespace std;
class Node {
public:
string todos;
Node* next;
Node(string todos) {
this->todos = todos;
next = NULL;
}
};
void print_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
cout << temp->todos << " ";
temp = temp->next;
}
}
Node* takeinput() {
string var;
int num;
Node* head = NULL;
Node* tail = NULL;
cout << "Please enter 5 Todo tasks. " << endl;
cout << endl;
cout << "If you would like to exit this prompt please enter 'End' " << endl;
cout << "If you would like to enter an item onto the list please press 1 " << endl;
cout << endl;
cin >> num;
while (var != "End") {
if (num == 1) {
Node* newNode = new Node(var);
if (head == NULL) {
head = newNode;
tail = newNode;
}
else {
tail->next = newNode;
tail = tail->next;
}
}
cin >> var;
if (num == 2) {
}
}
return head;
}
int main()
{
string hello;
Node* head = takeinput();
print_list(head);
}
我正在努力学习;列表类";来自STL库的文件在引擎盖下工作。
std::list是一个双链表,具有用户指定的节点数据类型。
对于Visual Studio,它是一个带有虚拟节点的循环链表,其中dummy.next是指向第一个节点的指针,dummy.prev是指向最后一个节点的指示器,first_node.prev和last_node.next指向虚拟节点。有一个列表大小和可选的用户定义分配器(用于节点(。支持使用运算符重载的迭代器。std::list::end((向伪节点返回迭代器(注意迭代器不能为null(。std::list::splice((允许节点在列表中移动或从一个列表移动到另一个列表。
std::list::sort((应该是链表的自下而上的合并排序,但从Visual Studio 2015开始,当它被切换为基于迭代器时,它被改为链表的效率较低的自上而下的合并排序。如果感兴趣,请链接到示例自下而上的版本:
`std::list<gt;:sort((`-为什么突然切换到自上而下的策略?
std::list的源代码大约有2000行。我建议从基本的双链接列表代码开始。