gpt4 book ai didi

c++ - 单链表 C++

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:56 27 4
gpt4 key购买 nike

大家好,我现在正在为期中考试学习,正在努力尝试使用单链表创建一个简单的程序。我想让它做的就是将“1”、“2”、“3”、“4”插入列表并打印出来。请看下面的代码:

#include <iostream>
#include <string>
using namespace std;

class node{
public:
node(int data);
friend class slist;
private:
int data;
node *next;
};

node::node(int data){
data = data;
next = NULL;
}

class slist{
public:
slist(){
head = NULL;
}
void insert(int item);
void output();

private:
node* head;
};

void slist::insert(int item){
node* newnode = new node(item);
if(head == NULL)
{
head = newnode;
}
else
{
newnode->next = head;
head = newnode;
}
}

void slist::output(){
node* p = head;
while (p->next != NULL){
cout << p->data << " ";
p = p->next;
}
cout << p->data << " ";
}

int main(){
slist FINAL;

FINAL.insert(1);
FINAL.insert(2);
FINAL.insert(3);
FINAL.insert(4);

FINAL.output();

return 0;
}

它编译得很好,但它打印出(我猜)指针而不是实际数字。谁能告诉我为什么?

非常感谢!

最佳答案

node 构造函数中存在错误。参数 data 与名为 data 的 memeber 变量冲突。这应该修复它:

node::node(int data){
this->data = data;
next = NULL;
}

更好的选择是将参数重命名为其他名称。还可以考虑使用 initialization list :

node::node(int d) : data(d), next(NULL) { }

关于c++ - 单链表 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026065/

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