理解链表中的排队
understanding enqueue in a linked list
嘿,我正在尝试添加到我的队列中,但我遇到了问题,我需要一些帮助
我为我的队列使用了一个链接列表,问题是当我将第三个项目添加到我的列表时,我覆盖了第二个
这是代码
void addnode(node* data)
{
if (begin == NULL)
{
data->next = begin;
begin = data;
}
else
{
end = data; //this is where the problem when i add a 3rd data i dont save anywhere my end so its gone
begin->next = end;
end->next = NULL;
}
}
在我的代码中,我在队列的开头开始,在队列的结尾结束
我建立的链表是用classes in c++,
但是每当我添加第三个数据时,第二个数据就会被覆盖,所以我总是有两个..
我需要一些关于如何修复它的帮助,谢谢 :)
编辑这是更多代码:这是我的 class 队列
#include"node.h"
class queue
{
public:
queue();
~queue();
void addNode(node*);
private:
node* begin;
node* end;
};
这是我从
获取数据的class
using namespace std;
class node
{
friend void printclient(node &);
public:
node();
~node();
void setstr(string);
void setmoney(int);
node* next;
private:
string name;
double money;
int id;
};
函数可以看成下面的样子。我假设指针 data
指向的节点的数据成员 next
已经设置为 nullptr
.
void addnode(node* data)
{
if (begin == nullptr)
{
begin = end = data;
}
else
{
end = end->next = data;
}
}
也就是说如果队列为空(指针begin
和end
等于nullptr)然后begin和end设置为添加的指针。
否则,新节点被附加到队列的末尾。在这种情况下,指针end指向的节点的数据成员next被设置为新指针,这个指针成为结束指针。
注意队列的用户应该对class节点一无所知。 class 应声明为 class 队列的私有或受保护成员。并且方法 addNode 应该替代方法 push 声明应该看起来像
void push( const std::string &name, int id, double money );
嘿,我正在尝试添加到我的队列中,但我遇到了问题,我需要一些帮助 我为我的队列使用了一个链接列表,问题是当我将第三个项目添加到我的列表时,我覆盖了第二个 这是代码
void addnode(node* data)
{
if (begin == NULL)
{
data->next = begin;
begin = data;
}
else
{
end = data; //this is where the problem when i add a 3rd data i dont save anywhere my end so its gone
begin->next = end;
end->next = NULL;
}
}
在我的代码中,我在队列的开头开始,在队列的结尾结束
我建立的链表是用classes in c++, 但是每当我添加第三个数据时,第二个数据就会被覆盖,所以我总是有两个.. 我需要一些关于如何修复它的帮助,谢谢 :)
编辑这是更多代码:这是我的 class 队列
#include"node.h"
class queue
{
public:
queue();
~queue();
void addNode(node*);
private:
node* begin;
node* end;
};
这是我从
获取数据的classusing namespace std;
class node
{
friend void printclient(node &);
public:
node();
~node();
void setstr(string);
void setmoney(int);
node* next;
private:
string name;
double money;
int id;
};
函数可以看成下面的样子。我假设指针 data
指向的节点的数据成员 next
已经设置为 nullptr
.
void addnode(node* data)
{
if (begin == nullptr)
{
begin = end = data;
}
else
{
end = end->next = data;
}
}
也就是说如果队列为空(指针begin
和end
等于nullptr)然后begin和end设置为添加的指针。
否则,新节点被附加到队列的末尾。在这种情况下,指针end指向的节点的数据成员next被设置为新指针,这个指针成为结束指针。
注意队列的用户应该对class节点一无所知。 class 应声明为 class 队列的私有或受保护成员。并且方法 addNode 应该替代方法 push 声明应该看起来像
void push( const std::string &name, int id, double money );