为什么我的C++;队列未正确释放? 我需要创建一个基于这个头(使用链表)的C++队列:

为什么我的C++;队列未正确释放? 我需要创建一个基于这个头(使用链表)的C++队列:,c++,debugging,linked-list,queue,C++,Debugging,Linked List,Queue,以下是我到目前为止的情况: #include <iostream> #include "queue.h" using namespace std; queue::queue(){ current_size = 0; front_p = new node(NULL, NULL, NULL); back_p = new node(NULL, NULL, NULL); } void queue::enqueue(int item){ if (curr

以下是我到目前为止的情况:

#include <iostream>
#include "queue.h"
using namespace std;

queue::queue(){

    current_size = 0;
    front_p = new node(NULL, NULL, NULL);
    back_p = new node(NULL, NULL, NULL);
}

void queue::enqueue(int item){

    if (current_size == 0){
        node * new_node;
        new_node = new node(item, back_p, front_p);
        front_p->prev = new_node;
        back_p->next = new_node;
        current_size = current_size + 1;
    }

    else if (current_size > 0){
        node * new_node;
        new_node = new node(item, back_p, back_p->next);
        back_p->next = new_node;
        new_node->next->prev = new_node;
        current_size = current_size + 1;
    }
}

int queue::dequeue(){

    if (current_size > 0) {

    node *remove = front_p->prev;

    return remove->data;

    remove-> prev->next = front_p;
    front_p->prev = remove->prev;

    delete remove;

    current_size = current_size - 1;
    }

    else if (current_size == 0) {
        return NULL;
    }

    else {
        return NULL;
    }
}

int queue::front(){

    return front_p -> prev -> data;
}

bool queue::empty(){

    return current_size == 0;
}

int queue::size(){

    return current_size;
}

int queue::remove(int item){

    for (int i = 0; i < current_size; i++){


    }
    return NULL;
}

int main(){

    int int1, int2;
    cout << "Welcome to the double linked list test program" << endl << "Please enter a #" << endl;
    cin >> int1;
    cout << "Another number" << endl;
    cin >> int2;

    queue * main_queue;
    main_queue = new queue();

    main_queue->enqueue(int1);
    main_queue->enqueue(int2);

    cout << "The front element is: " << main_queue->front() << endl;

    cout << "I have dequeued: " << main_queue->dequeue() << endl;

    cout << "The front element now: " << main_queue->front() << endl;

}
#包括
#包括“queue.h”
使用名称空间std;
队列::队列(){
当前_大小=0;
front_p=新节点(NULL,NULL,NULL);
back_p=新节点(NULL,NULL,NULL);
}
无效队列::排队(int项){
如果(当前_大小==0){
节点*新节点;
新节点=新节点(项目、背面、正面);
前\u p->prev=新建\u节点;
后退->下一步=新建节点;
当前大小=当前大小+1;
}
否则如果(当前大小>0){
节点*新节点;
新建节点=新建节点(项目,后退,后退->下一步);
后退->下一步=新建节点;
新建节点->下一步->上一步=新建节点;
当前大小=当前大小+1;
}
}
int queue::dequeue(){
如果(当前大小>0){
节点*remove=front\u p->prev;
返回删除->数据;
移除->上一步->下一步=前一步;
前面板->前面板=移除->前面板;
删除删除;
当前大小=当前大小-1;
}
else if(当前_大小==0){
返回NULL;
}
否则{
返回NULL;
}
}
int queue::front(){
返回前面板->前面板->数据;
}
bool队列::empty(){
返回当前_大小==0;
}
int队列::size(){
返回当前_大小;
}
int队列::删除(int项){
对于(int i=0;i<当前大小;i++){
}
返回NULL;
}
int main(){
int1,int2;
cout排队(int2);
这是你的问题:

if (current_size > 0) {
return front_p->data;
node * temp = front_p;
front_p = front_p->prev;
delete temp;
}

在if语句中要做的第一件事是从函数返回。在
return
之后,函数中不再执行任何代码。

我认为您需要更改出列代码,使其看起来像这样

 if(current_size > 0)
 {
   node *remove = front_p->prev;  
   remove-> prev->next = front_p;
   front_p->prev = remove->prev;      
   current_size = current_size - 1;
   return remove->data;  
 }

如上所述,您的return语句不允许在它下面执行任何其他代码。

您真的认为他应该让它看起来像这样吗?请检查if语句的最后两行。@Layne oops!最好不要完全删除它。:p已修复
 if(current_size > 0)
 {
   node *remove = front_p->prev;  
   remove-> prev->next = front_p;
   front_p->prev = remove->prev;      
   current_size = current_size - 1;
   return remove->data;  
 }