C++ 如何获得下面的链表与朋友运营商的工作?
我正试图用下面的代码执行链表。但我无法找出其中的错误。 我得到了它的概念,但我没有实现同样的。 非常感谢您的帮助C++ 如何获得下面的链表与朋友运营商的工作?,c++,c++11,C++,C++11,我正试图用下面的代码执行链表。但我无法找出其中的错误。 我得到了它的概念,但我没有实现同样的。 非常感谢您的帮助 #include <iostream> using namespace std; struct Node { int data; Node *next; Node(int j) : data(j), next(nullptr) {} friend ostream &operator<<(ostream &os, const Nod
#include <iostream>
using namespace std;
struct Node {
int data;
Node *next;
Node(int j) : data(j), next(nullptr) {}
friend ostream &operator<<(ostream &os, const Node &n) {
cout << "Node\n"
<< "\tdata: " << n.data << "\n";
return os;
}
};
void addElement(Node **head, int data){
Node *temp = nullptr;
temp->data = data;
temp->next=nullptr;
Node *cur = *head;
while(cur) {
if(cur->next == nullptr) {
cur->next = temp;
return;
}
cur = cur->next;
}
};
void printList(const Node *head){
const Node *list = head;
while(list) {
cout << list;
list = list->next;
}
cout << endl;
cout << endl;
};
void deleteList(Node *head){
Node *delNode =nullptr;
while(head) {
delNode = head;
head = delNode->next;
delete delNode;
}};
int main() {
Node *list = nullptr;
addElement(&list, 1);
addElement(&list, 2);
printList(list);
deleteList(list);
return 0;
}
#包括
使用名称空间std;
结构节点{
int数据;
节点*下一步;
节点(intj):数据(j),下一个(nullptr){
friend ostream&operator这里有一个错误
void addElement(Node **head, int data){
Node *temp = nullptr;
temp->data = data;
temp
为空,但您取消引用它。取消引用空指针是错误的
我猜你是这个意思
void addElement(Node **head, int data) {
Node *temp = new Node(data);
它分配一个新的节点
,用数据初始化它
,并使temp
指向新分配的节点
什么“错误”您指的是?代码没有全部工作?它在哪里卡住了?请尝试调试器,或在每次调用列表之间放置print语句?即,这两个addElement
调用是否工作?它是否在print
函数中卡住了?它是否挂起,或返回时没有打印?@pptOUT“代码完全工作”您没有任何编译错误并不意味着您的代码“工作正常”。很抱歉,我正在使用联机编译器,因此无法获得准确的位置。因此,这将消除temp->data=data的使用?@pptOUT是,因为该步骤是在节点中完成的。我已使用您的答案进行了更新,但我看不到任何输出,可能是因为我的打印语句也不正确!您能帮助我了解打印状态吗装饰also@pptOUT错误的不是打印程序。问题是(即使我改正了)addElement
例程中没有任何内容会更改*head
的值。因此,list
在main中保持为空,而打印例程将不打印任何内容。我将让您修复addElement
例程。您需要测试空列表,作为一种特殊情况,并将*head
设置为temp
是,否则像现在这样将temp
添加到现有列表的末尾。