如何在与朋友操作员的链接列表下工作?

时间:2019-06-06 17:55:34

标签: 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 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;
   }

编译后我没有错误,也没有输出。所以我无法弄清楚出什么问题了,否则我的实现是不正确的!

1 个答案:

答案 0 :(得分:1)

这里直接出现错误

void addElement(Node **head, int data){
Node *temp = nullptr;
temp->data = data;

temp为空,但是您取消引用它。取消引用空指针是错误的。

我想你是这个意思

void addElement(Node **head, int data) {
    Node *temp = new Node(data);

分配新的Node,用data初始化它,并使temp指向新分配的Node