我正在尝试使用下面的代码执行链表,但是我无法找出其中的错误。 我有它的概念,但是我无法实现相同的概念。 我们非常感谢您的帮助。
#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;
}
编译后我没有错误,也没有输出。所以我无法弄清楚出什么问题了,否则我的实现是不正确的!
答案 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
。