0
这是我的程序的输出:离队链表
Initial Queue
40 30
40 was popped from back
30
New Queue
12 10 8 30
我有功能的push_back问题,我特灵push 12 10 8 after 30
,换句话说,输出应为30 8 10 12
任何建议
#include <cstddef>
class ListNode {
public:
ListNode() {next=NULL;};
int get_data() {return data;};
ListNode * get_next() {return next;};
void set_data(int data) {this->data = data;};
void set_next(ListNode *next) {this->next = next;};
private:
int data;
ListNode *next;
};
#include "dequeue.h"
#include <iostream>
int main()
{
DeQueue q;
q.push_back(30);
q.push_back(40);
cout << "Initial Queue" << endl;
cout << q << endl;
cout << q.pop_back() << " was popped from back" << endl;
cout << q << endl;
q.push_back(8);
q.push_back(10);
q.push_back(12);
cout << "New Queue" << endl;
cout << q << endl;
}
#include "dequeue.h"
DeQueue::~DeQueue()
{
delete [] storage;
}
int DeQueue::pop_back()
{
if(storage == NULL){ //queue is empty!
return -1; //should throw exception
}
int return_data = storage->get_data();
ListNode *tmp = storage;
storage = storage->get_next();
delete tmp;
return return_data;
}
void DeQueue::push_back(int data)//front
{
ListNode *tmp = new ListNode;
tmp->set_next(storage);
tmp->set_data(data);
storage = tmp;
}
ostream & operator <<(ostream &os, DeQueue &q)
{
ListNode *tmp = q.storage;
while(tmp!=NULL){
os << tmp->get_data() << " ";
tmp = tmp->get_next();
}
os << endl;
return os;
}
#include "list.h"
#include <iostream>
using namespace std;
class DeQueue {
friend ostream & operator <<(ostream &os, DeQueue &q);
public:
DeQueue(){storage=NULL;};
~DeQueue();
int pop_front();
int pop_back();
void push_front(int data);
void push_back(int data);
private:
ListNode *storage;
};