我目前正在研究類的項目,該類需要我在不使用庫的情況下實現帶有鏈接列表的隊列。到目前爲止,我的項目工作得很好,但是當我push_back()1,3,5,7時,屏幕在左邊的隊列前面顯示它。我寧願它看左後方,如REAR 7 5 3 1 FRONT。我在這裏錯過了什麼,可以幫助我做到這一點?顯示使用鏈接列表從後端到前端實現的隊列
#include "queue.h"
#include <iostream>
Queue::Queue()
{
queue_size = 0;
front = 0;
rear = 0;
}
Queue::~Queue()
{
delete front;
delete rear;
}
void Queue::push_back(int x)
{
node * q = new node;
q->data = x;
q->next = 0;
if(this->isEmpty())
{
front = q;
front ->next = 0;
rear = front;
}
else
{
rear->next = q;
rear = rear->next;
rear->next = 0;
}
queue_size = queue_size + 1;
}
void Queue::pop_front(int &num)
{
node * temp;
num = front->data;
temp = front;
front = front ->next;
delete temp;
queue_size = queue_size - 1;
}
bool Queue::isEmpty()
{
if(front == 0)
return true;
else
return false;
}
int Queue::ret_size()
{
return queue_size;
}
void Queue::display()
{
node * temp;
temp = front;
for(int i = 0; i < queue_size; i++)
{
std::cout<<temp->data<< " ";
temp = temp->next;
}
std::cout<<"\n";
}
我看到你在下面得到了你需要的答案。然而,我想我會拋出改變你的節點類/結構的想法。您可以添加另一個名爲「prev」的節點*字段並使用Double鏈接列表實施隊列。這將允許您使用後指針向後走過隊列。實際上,這將比使用遞歸方法運行得更快,並且還避免了可能的堆棧溢出。但是,每個節點還有一個額外的4字節,刪除和添加節點的邏輯稍微複雜一些。只是你可以考慮的另一種設計。 –