/*
* SqQueue.h
*
* Created on: Oct 7, 2015
* Author: chris
*/
#ifndef SQQUEUE_H_
#define SQQUEUE_H_
typedef int ElemType;
enum{SQQUEUEINITSIZE = 30};
struct SqQueue{
ElemType * data;
int front, rear;
int size;
};
bool SqQueueCreate(SqQueue& sq);
void SqQueueDestroy(SqQueue& sq);
void SqQueueClear(SqQueue& sq);
int SqQueueLength(SqQueue& sq);
bool SqQueueEmpty(SqQueue& sq);
int SqQueueSize(SqQueue& sq);
bool SqQueueEnQueue(SqQueue& sq, ElemType e);
bool SqQueueFront(SqQueue& sq, ElemType& e);
bool SqQueueDeQueue(SqQueue& sq);
void SqQueueDisplay(SqQueue& sq);
#endif /* SQQUEUE_H_ */
/*
* SqQueue.cpp
*
* Created on: Oct 7, 2015
* Author: chris
*/
#include"SqQueue.h"
#include<iostream>
using namespace std;
bool SqQueueCreate(SqQueue& sq)
{
sq.data = new ElemType[SQQUEUEINITSIZE];
if(!sq.data) return false;
sq.size = SQQUEUEINITSIZE;
sq.front = sq.rear = 0;
return true;
}
void SqQueueDestroy(SqQueue& sq)
{
delete sq.data;
sq.size = 0;
sq.front = sq.rear = 0;
}
void SqQueueClear(SqQueue& sq)
{
sq.front = sq.rear = 0;
}
int SqQueueLength(SqQueue& sq)
{
return (sq.size+sq.rear-sq.front)%sq.size;
}
bool SqQueueEmpty(SqQueue& sq)
{
return sq.front == sq.rear;
}
int SqQueueSize(SqQueue& sq)
{
return sq.size;
}
bool SqQueueEnQueue(SqQueue& sq, ElemType e)
{
if((sq.rear + 1)%sq.size ==sq.front) return false;
sq.data[sq.rear] = e;
sq.rear = (sq.rear+1)%sq.size;
return true;
}
bool SqQueueFront(SqQueue& sq, ElemType& e)
{
if(sq.front == sq.rear) return false;
e = sq.data[sq.front];
return true;
}
bool SqQueueDeQueue(SqQueue& sq)
{
if(sq.front == sq.rear) return false;
sq.rear = (sq.size+sq.rear-1)%sq.size;
return true;
}
void SqQueueDisplay(SqQueue& sq)
{
for(int i = sq.front; i < sq.rear; i = (i+1)%sq.size)
cout << sq.data[i] << " ";
cout << endl;
}