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
添加到现有列表的末尾。