在C++中建立动态队列
making a dynamic queue in C++
我正在尝试在C++中创建一个动态队列,我编写了大部分代码,但它不起作用,有人可以好心地查看它并告诉我出了什么问题吗? :)另外,请评论我希望改进的编码风格。
我写了一个 main 函数来测试程序,这应该是预期的结果:
数据1=1
数据1=1 数据2=2
1 2 3 4 5 6
Del:1 Del:2 Del: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)
- 不要分配,比较!
相关文章:
- boost::进程间消息队列引发错误
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- C++中的动态铸造故障
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Android NDK传感器向事件队列报告奇怪的间隔
- 内联映射初始化的动态atexit析构函数崩溃
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- C++ 调用析构函数后动态模板队列"double free or corruption (out)"
- 在C++中建立动态队列
- 如何显示动态堆栈和队列(c++)中的所有元素
- 使用链表的动态队列//总线错误:10(C++)
- 我应该在高度动态的系统中使用优先级队列来调度任务(函数等)吗
- 如何在c++中动态创建一个具有列表底层数据结构的队列
- 创建动态循环队列,元素输出正常,但程序崩溃
- 动态队列
- 如何使提升::无锁::队列动态调整大小