C++ 实现队列类,分段错误?

C++ 实现队列类,分段错误?,c++,segmentation-fault,undefined-behavior,C++,Segmentation Fault,Undefined Behavior,我正在尝试实现一个队列类(使用节点结构和队列类)。 我有一个分割错误,我的眼睛让我失望,我似乎找不到它。 我的pushBack不起作用,我很确定我的popFront可能不起作用。我只是希望有人能把我推向正确的方向 还有,如果你还没弄明白的话。对于C++,我显然是很新的。 #包括 使用名称空间std; 结构节点{ int数据; 节点*链接; }; 类队列{ 公众: 队列(); ~Queue(); 无效回推(int d); bool-popFront(); bool是空的(); void displ

我正在尝试实现一个队列类(使用节点结构和队列类)。 我有一个分割错误,我的眼睛让我失望,我似乎找不到它。 我的
pushBack
不起作用,我很确定我的
popFront
可能不起作用。我只是希望有人能把我推向正确的方向

还有,如果你还没弄明白的话。对于C++,我显然是很新的。
#包括
使用名称空间std;
结构节点{
int数据;
节点*链接;
};
类队列{
公众:
队列();
~Queue();
无效回推(int d);
bool-popFront();
bool是空的();
void displayQueue();
私人:
节点*返回;
节点*前端;
};
队列::队列(){
back=NULL;
front=NULL;
}
队列::~Queue(){
而(!isEmpty()){
popFront();
}
}
无效队列::回推(int d){
节点*温度;
if(temp==NULL){
返回;
}否则{
temp->link=NULL;
if(back==NULL){
背部=温度;
前=温度;
}否则{
前->链接=温度;
前=温度;
}
}
}
bool队列::popFront(){
if(front==NULL){
返回false;
}否则{
节点*removeNode;
removeNode=前部;
如果(后==前){
back=NULL;
front=NULL;
}否则{
节点*previousFront=back;
while(前面->链接!=前面){
previousFront=previousFront->link;
}
前面=前面的前面;
前->链接=空;
}
删除removeNode;
返回true;
}
}
bool队列::isEmpty(){
返回(返回==NULL);
}
无效队列::显示队列(){
if(isEmpty()){

cout至少有一个主要问题,在
pushBack
中,您使用的
temp
没有初始化它:

 void Queue::pushBack(int d) 
 {
   Node* temp;

    if (temp == NULL) {
        ^^^^
在启用警告的情况下编译会对您有所帮助,使用带有
gcc
-Wall
标志会给您以下警告:

warning: 'temp' is used uninitialized in this function [-Wuninitialized]
 if (temp == NULL) {
 ^
使用一个变量一个未初始化的自动变量,就像这样,这意味着程序的行为是不可预测的。另请参阅以获取参考

你可能想做的事情是这样的:

   Node* temp = new Node();

   temp->data = d ;

虽然为
节点设置
构造函数
会更好。

您不能设置这样的变量:
temp->link=NULL;

使用valgrind。它会告诉您代码哪里出错了。谢谢!这正是我的问题所在。我会记住这一点以备将来参考。:)
   Node* temp = new Node();

   temp->data = d ;