gpt4 book ai didi

c++ - 如何让下面的链接列表与 friend 运算符(operator)一起工作?

转载 作者:行者123 更新时间:2023-11-30 04:46:53 24 4
gpt4 key购买 nike

我正在尝试使用以下代码执行链表。但我无法找出其中的错误。我明白了它的概念,但我没能实现它。非常感谢任何帮助。

#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;
}

编译后我没有得到任何错误也没有输出。所以我无法弄清楚哪里出了问题或者我的实现是不正确的!

最佳答案

直接报错

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

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

我猜你是这个意思

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

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

关于c++ - 如何让下面的链接列表与 friend 运算符(operator)一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56482788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com