pau*_*ago 0 c++ pointers linked-list
嘿伙计们,我正在研究期中考试,正在努力尝试使用单一链表创建一个简单的程序.我想要它做的是在列表中插入"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;
}
Run Code Online (Sandbox Code Playgroud)
编译很好,但它打印出(我猜)指针而不是实际数字.谁能告诉我为什么?
非常感谢!
node构造函数中有一个错误.该参数data与名为的memeber变量冲突data.这应该解决它:
node::node(int data){
this->data = data;
next = NULL;
}
Run Code Online (Sandbox Code Playgroud)
更好的选择是将参数重命名为其他内容.还要考虑使用初始化列表:
node::node(int d) : data(d), next(NULL) { }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1715 次 |
| 最近记录: |