我试图在C ++中创建一个动态队列,并且我编写了大部分代码,但是它不起作用,有人可以友好地浏览它并告诉我出了什么问题吗? :)
还请评论我希望改进的编码风格。
我编写了一个主要函数来测试程序,这应该是预期的结果:
data1 = 1
data1 = 1 data2 = 2
1 2 3 4 5 6
删除:1删除:2删除:3
这是我的代码:
#include <iostream>
template<typename T>
class Queue
{
struct Node
{
T data;
Node* next;
};
Node* head;
Node* tail;
int qsize;
public:
Queue()
{
head = NULL;
tail = NULL;
qsize = 0;
}
bool empty()
{
if(qsize = 0){return true;}
else {return false;}
}
void put(const T& data)
{
Node *newNode = new Node;
if(qsize)
{
tail->next = newNode;
newNode->data = data;
newNode->next = NULL;
tail = newNode;
}
else
{
head = tail = newNode;
newNode->data = data;
newNode->next = NULL;
}
qsize++;
}
T get()
{
T val;
Node *temp;
if(empty())
{
std::cout << "queue is empty" << std::endl;
}
else
{
val = head->data;
temp = head;
head = head->next;
delete temp;
qsize--;
return val;
}
}
void destroyQueue()
{
while(!empty())
{
std::cout<<"DEL:";
get();
}
}
~Queue()
{
destroyQueue();
}
};
int main()
{
int data1,data2;
Queue<int>* q = new Queue<int>();
q->put(1);
data1 = q->get();
std::cout << " data1=" << data1 << std::endl;
q->put(1);
q->put(2);
data1 = q->get();
data2 = q->get();
std::cout << " data1=" << data1
<< " data2=" << data2 << std::endl;
q->put(1);
q->put(2);
q->put(3);
q->put(4);
q->put(5);
q->put(6);
while (!q->empty()) std::cout << " " << q->get();
std::cout << std::endl;
q->put(1);
q->put(2);
q->put(3);
delete q;
}
最佳答案
if(qsize = 0)
应该是if(qsize == 0)
-不要分配,比较!
关于c++ - 在C++中创建动态队列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20938002/