Single linked lists C++
Single linked lists C++
嘿伙计们,我现在正在学习期中考试,正在努力尝试使用单个链表创建一个简单的程序。 我想要它做的只是将"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
的成员变量冲突。这应该可以解决它:
node::node(int data){
this->data = data;
next = NULL;
}
更好的选择是将参数重命名为其他名称。还可以考虑使用初始化列表:
node::node(int d) : data(d), next(NULL) { }
node::node(int data) {
data = data;
next = NULL;
}
线路data = data
对您来说是一个问题。将参数重命名为与成员不同的参数。这应该会给你一系列成员变量的垃圾值(不是指针) data
.
注意:这是命名约定区分成员变量的原因之一,无论是跟踪还是引导_
,m_
或任何平衡是黑白信息和美学的地方。
好吧,我认为两个实例都data
data = data;
是本地的;因此node
的数据成员永远不会获得分配给它的任何内容。 打印的是未定义的值,而不是地址。 无论如何,这在风格上都很糟糕;这里有很多约定,但对于类成员来说_data
一个好的约定,对于函数参数data
约定。 进行简单的更改,看看这是否不能解决您的问题。
相关文章:
- 提升图:当我的图使用 listS 作为 VertexList 时,如何调用深度优先搜索()?
- std::move in initializer lists
- BGL:listS和index_map中的顶点
- 以listS为顶点容器的图上的astar_search
- c++ libconfig and lists
- 制作一个类以提供Lists接口
- 为什么我的函数"missing argument lists"?
- 同时遍历两个 std::lists
- 模板专用化站点报告"too few template-parameter-lists"错误
- Python lists and ctypes
- 模板专业化 -> 'too few template-parameter-lists'
- 如何使用boost::graph算法与listS,setS作为顶点/边缘容器
- 将Initializer Lists与std::map一起使用
- C++ linked lists
- vector of lists + iterator CPP
- BGL adjacency_list<listS, listS>::vertex_descriptor 计算结果为 void*
- Dijkstra最短路径与VertexList = ListS在boost图
- "multiple template parameter lists are not allowed" ?
- C++ OpenMPI linked-lists
- 在boost或stl线程安全容器中,类似于lists和unordered_maps