head.h
#ifndef HEAD_H
#define HEAD_H
#include <iostream>
using namespace std;
#define MAXSIZE 7
typedef int datatype;
class Stack
{
private:
datatype data[MAXSIZE];
int front = 0;
int rear = 0;
public:
//入队
bool full();
bool empty();
void push(datatype value);
void pop();
void show();
int size();
};
#endif // HEAD_H
test.cpp
#include "head.h"
void Stack::push(datatype value)
{
if(full())
{
cout << "队列满" << endl;
}
else
{
data[rear] = value;
rear = (rear+1)%MAXSIZE;
}
}
//出队
void Stack::pop()
{
if(empty())
{
cout << "队列为空" << endl;
}
else
{
cout << "出栈的元素是:" << data[front] <<endl;
front = (front+1)%MAXSIZE;
}
}
//队列是否满
bool Stack::full()
{
if(front == (rear + 1)%MAXSIZE)
{
return 1;
}
else
{
return 0;
}
}
//队列是否为空
bool Stack::empty()
{
if(front == rear)
{
return 1;
}
else
{
return 0;
}
}
//输出队列
void Stack::show()
{
if(empty())
{
cout << "队列为空" << endl;
}
else
{
int temp = front;
while(rear != temp)
{
cout << data[temp] <<"\t";
temp = (temp+1)%MAXSIZE;
}
cout<<endl;
}
}
//求队列长度
int Stack::size()
{
int len = (MAXSIZE - front + rear)%MAXSIZE;
cout << "顺序队列的长度为:" << len << endl;
return len;
}
main.cpp
#include "head.h"
int main()
{
Stack *queue = new Stack;
queue->show();
queue->push(12);
queue->push(25);
queue->show();
queue->push(88);
queue->push(12);
queue->push(25);
queue->push(12);
queue->push(25);
queue->push(12);
queue->push(25);
queue->size();
queue->show();
queue->pop();
queue->size();
queue->show();
return 0;
}
运行结果