#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iterator>
#include <initializer_list>
#include <deque>
#include <list>
#include <array>
#include <forward_list>
#include <sstream>
#include <stack>
#include <queue>
#include <algorithm>
#include <numeric>
#include <memory>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <functional>
#include <type_traits>
#include <utility>
#include <tuple>
#include <bitset>
#include <regex>
#include <random>
#include <iomanip>
#include <ctime>
#include <cmath>
#define ERROR -1
using namespace::std;
using ElementType = int;
typedef int Position;
#define ERROR -1
#define MAXSIZE 10
struct QNode;
typedef QNode* PtrToQNode;
struct QNode
{
ElementType *Data;
Position front;
Position rear;
int MaxSize;
};
typedef PtrToQNode Queue;
Queue CreateQueue(int maxsize)
{
Queue Q = (Queue)malloc(sizeof(QNode));
Q->Data = (ElementType*)malloc(sizeof(ElementType)*maxsize);
Q->MaxSize = maxsize;
Q->front = 0;
Q->rear = 0;
return Q;
}
bool IsQueueFull(Queue Q)
{
return ((Q->rear + 1) % Q->MaxSize == Q->front);
}
bool AddQueue(Queue Q, ElementType X)
{
if (IsQueueFull(Q))
{
cout << "The Queue is full.Invalid addition." << endl;
return false;
}
else
{
Q->rear = (Q->rear + 1) % Q->MaxSize;
Q->Data[Q->rear] = X;
return true;
}
}
bool IsQueueEmpty(Queue Q)
{
return (Q->front == Q->rear);
}
ElementType DeleteQueue(Queue Q)
{
if (IsQueueEmpty(Q))
{
cout << "The Queue is empty.Invalid delete." << endl;
return ERROR;
}
else
{
Q->front = (Q->front + 1) % Q->MaxSize;
ElementType storage = Q->Data[Q->front];
return storage;
}
}
int main()
{
Queue Q = CreateQueue(MAXSIZE);
AddQueue(Q, 3);
AddQueue(Q, 4);
AddQueue(Q, 5);
DeleteQueue(Q);
for (int i = Q->front+1; i != Q->rear+1; ++i)
{
cout << Q->Data[i] << endl;
}
return 0;
}
数据结构第三章队列线性实现代码
最新推荐文章于 2021-03-02 17:48:50 发布