编写程序queue.h,用链表实现队列(或栈)类。在测试程序lab9_3.cpp 中声明一个整型队列(或栈)对象,插入5个整数,压入队列(或栈),再依次取出并显示出来。
时间: 2024-03-05 13:51:10 浏览: 58
好的,我可以帮你编写 queue.h,这里提供一份链式队列的实现代码,你可以参考一下:
```c++
#ifndef QUEUE_H_
#define QUEUE_H_
#include <iostream>
template<typename T>
class Queue
{
private:
struct Node
{
T item;
Node* next;
Node(const T& i, Node* n = nullptr) : item(i), next(n) {}
};
Node* front;
Node* rear;
int size;
public:
Queue() : front(nullptr), rear(nullptr), size(0) {}
~Queue()
{
Node* temp;
while (front != nullptr)
{
temp = front;
front = front->next;
delete temp;
}
}
bool is_empty() const { return size == 0; }
int get_size() const { return size; }
void clear() { *this = Queue(); }
void enqueue(const T& item)
{
Node* temp = new Node(item);
if (front == nullptr)
{
front = temp;
rear = temp;
}
else
{
rear->next = temp;
rear = temp;
}
++size;
}
T dequeue()
{
if (is_empty())
{
std::cerr << "Queue is empty." << std::endl;
exit(EXIT_FAILURE);
}
T item = front->item;
Node* temp = front;
front = front->next;
delete temp;
--size;
return item;
}
T peek() const
{
if (is_empty())
{
std::cerr << "Queue is empty." << std::endl;
exit(EXIT_FAILURE);
}
return front->item;
}
};
#endif
```
然后你可以在测试程序lab9_3.cpp中创建一个整型队列对象,并进行入队、出队操作,代码如下:
```c++
#include <iostream>
#include "queue.h"
int main()
{
Queue<int> q;
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue(4);
q.enqueue(5);
while (!q.is_empty())
{
std::cout << q.dequeue() << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
1 2 3 4 5
```