队列的实现

来源:互联网 发布:蓝牙鼠标推荐 知乎 编辑:程序博客网 时间:2024/05/22 17:10


#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
typedef struct Queue//队列
{
 int * pBase;
 int front;
 int rear;
}QUEUE;

void init(QUEUE *pQ)
{
 pQ->pBase = (int *)malloc(sizeof(int)* 6);
 pQ->front = 0;
 pQ->rear = 0;
}

bool full_queue(QUEUE *pQ)
{
 if ((pQ->rear + 1) % 6 == pQ->front)
  return true;
 else
  return false;

}
bool en_queue(QUEUE * pQ, int val)
{
 if (full_queue(pQ))
 {
  return false;
 }
 else
 {
  pQ->pBase[pQ->rear] = val;
  pQ->rear = (pQ->rear + 1) % 6;
  return true;
 }
}

void traverse_queue(QUEUE * pQ)
{
 int i = pQ->front;
 while (i != pQ->rear)
 {
  cout << pQ->pBase[i] ;
  i = (i + 1) % 6;
 }
 return;
}

bool emput_queue(QUEUE * pQ)
{
 if (pQ->front == pQ->rear)
  return true;
 else
  return false;
}

bool remove_queue(QUEUE * pQ, int * pVal)
{
 if (emput_queue(pQ))
 {
  return false;
 }
 else
 {
  *pVal = pQ->pBase[pQ->front];
  pQ->front = (pQ->front + 1) % 6;
  return true;
 }
}
int main(void)
{
 QUEUE Q;
 init(&Q);
 int Val;
 en_queue( &Q,1);
 en_queue(&Q, 2);
 en_queue(&Q, 3);
 en_queue(&Q, 4);
 en_queue(&Q, 5);
 en_queue(&Q, 6);
 en_queue(&Q, 7);
 en_queue(&Q, 8);
 traverse_queue(&Q);
 remove_queue(&Q,&Val);
 cout << endl;
 traverse_queue(&Q);
 system("pause");
 return 0;
}

0 0
原创粉丝点击