
#include<iostream>
#include<stdio.h>
using namespace std;
enum Error_code{underflow, overflow, success};
const int maxqueue =1000; // small value for testing
typedef double Queue_entry;
class CirQueue {
public:
CirQueue();
bool empty() const;
Error_code serve();
Error_code append(const Queue_entry &item);
Error_code retrieve(Queue_entry &item) const;
bool full() const;
int size() const;
void clear();
Error_code serve_and_retrieve(Queue_entry &item);
private:
int count;
int front, rear;
Queue_entry entry[maxqueue];
};
CirQueue::CirQueue()
{
count = 0;
rear = maxqueue - 1;
front = 0;
}
bool CirQueue::empty() const
{
return count == 0;
}
Error_code CirQueue::append(const Queue_entry &item)
{
if (count >= maxqueue) return overflow;
count++;
rear = ((rear + 1) == maxqueue) ? 0 : (rear + 1); //处理队尾的下标
entry[rear] = item;
return success;
}
Error_code CirQueue::serve()
{
if (count <= 0) return underflow;
count--;
front = ((front + 1) == maxqueue) ? 0 : (front + 1);
return success;
}
Error_code CirQueue::retrieve(Queue_entry &item) const
{
if (count <= 0) return underflow;
item = entry[front];
return success;
}
int CirQueue::size() const
{
return count;
}
bool CirQueue::full() const
{
return(count==maxqueue);
}
void CirQueue::clear()
{
count = 0;
rear = maxqueue-1;
front = 0;
}
Error_code CirQueue::serve_and_retrieve(Queue_entry &item)
{
if (count <= 0) return underflow;
item = entry[front];
count--;
front = ((front + 1) == maxqueue) ? 0 : (front + 1);
return success;
}
int main()
{
double item;
CirQueue numbers;
cin>>item;
while(item!=-1){
numbers.append(item);
cin>>item;
}
while (!numbers.empty()) {
numbers.serve_and_retrieve(item);
cout << item << " ";
}
cout << endl;
return 0;
}
//就是最基本的队列问题,除了主函数基本全是按照老师ppt写的,但是放在作业平台总有两个点过不去#include<stdio.h>
using namespace std;
enum Error_code{underflow, overflow, success};
const int maxqueue =1000; // small value for testing
typedef double Queue_entry;
class CirQueue {
public:
CirQueue();
bool empty() const;
Error_code serve();
Error_code append(const Queue_entry &item);
Error_code retrieve(Queue_entry &item) const;
bool full() const;
int size() const;
void clear();
Error_code serve_and_retrieve(Queue_entry &item);
private:
int count;
int front, rear;
Queue_entry entry[maxqueue];
};
CirQueue::CirQueue()
{
count = 0;
rear = maxqueue - 1;
front = 0;
}
bool CirQueue::empty() const
{
return count == 0;
}
Error_code CirQueue::append(const Queue_entry &item)
{
if (count >= maxqueue) return overflow;
count++;
rear = ((rear + 1) == maxqueue) ? 0 : (rear + 1); //处理队尾的下标
entry[rear] = item;
return success;
}
Error_code CirQueue::serve()
{
if (count <= 0) return underflow;
count--;
front = ((front + 1) == maxqueue) ? 0 : (front + 1);
return success;
}
Error_code CirQueue::retrieve(Queue_entry &item) const
{
if (count <= 0) return underflow;
item = entry[front];
return success;
}
int CirQueue::size() const
{
return count;
}
bool CirQueue::full() const
{
return(count==maxqueue);
}
void CirQueue::clear()
{
count = 0;
rear = maxqueue-1;
front = 0;
}
Error_code CirQueue::serve_and_retrieve(Queue_entry &item)
{
if (count <= 0) return underflow;
item = entry[front];
count--;
front = ((front + 1) == maxqueue) ? 0 : (front + 1);
return success;
}
int main()
{
double item;
CirQueue numbers;
cin>>item;
while(item!=-1){
numbers.append(item);
cin>>item;
}
while (!numbers.empty()) {
numbers.serve_and_retrieve(item);
cout << item << " ";
}
cout << endl;
return 0;
}
//不知道是漏掉什么点了请帮忙看一下
下面是题目:
(环形队列)请用顺序存储实现环形的数据结构CirQueue。你所实现的环形队列应包括:出队、入队、访问队首、判断队列是否已满,判断队列是否为空等功能。利用你实现的CirQueue实现输入整数序列的顺序输出。
【输入】整数序列以-1结束,序列长度小于100
【输出】输入整数序列的顺序序列
例如:
【输入】3 9 8 2 5 -1
【输出】3 9 8 2 5