C++队列(数组)

#include "iostream.h"

#define MAXSIZE  10


typedef  struct  queue{
  
	int q[MAXSIZE] ;
	int front;
	int rear;
	int n;//用于引用计数
};


void  initQueue(queue*  qq);
void  initQueue(queue* qq)  //此处必须是引用或者是指针才有效
{
    qq->front=0;
	qq->rear=0;
    qq->n=0;
	for(int i=0;i<MAXSIZE;i++)
	{
		qq->q[i]=0;
	}
}




bool  isQueueEmpty(queue* qq); //判断队列是否为空
bool  isQueueEmpty(queue* qq)
{
   if(qq->front==qq->rear)
   {
      return true;
   }


   return false;

}




bool isQueueFull(queue* qq);//判断是否队列已满
bool isQueueFull(queue* qq)
{
  if(qq->rear==MAXSIZE)
  {
  
    return true;
  }

  return false;

}



bool addElement(queue* qq , int Element);
bool addElement(queue* qq , int Element)
{
  //从队列的队尾入队
	if(isQueueFull(qq)==false)
	{
	   qq->q[qq->rear]=Element;
       qq->rear++;
       qq->n++; //队列数据加一
       return true;
	}
	
	return false;
}



void display(queue* qq);//显示队列中的所有元素
void display(queue* qq)
{
   for(int i=qq->front;i<qq->rear;i++)
   {
      cout<<qq->q[i]<<endl;  
   }

}


int removeElement(queue* qq);
int removeElement(queue* qq)
{
   int value = qq->q[qq->front];
   qq->front++;
 
  
   qq->n--;
   return value;

}



void main()
{
   int number;
   //queue*  qq;没有开辟内存空间导致内存泄漏
   queue*  qq =new queue();
   if(!qq)
   {
      return ;
   }
   initQueue(qq);
   //循环添加n个元素
   for(int i=0;i<6;i++)
   {
      cin>>number;
	  addElement(qq,number);
   }
   
   cout<<"显示队列中的所有元素"<<endl;
   display(qq);
   
   cout<<"移除队首元素"<<endl;
   removeElement(qq);


   cout<<"再次显示全队列元素"<<endl;
   display(qq);

   cout<<"显示计数(队列数据的个数)"<<endl;
   cout<<qq->n<<endl;

}<img src="http://img.blog.csdn.net/20140811105839646" alt="" />

C++队列(数组),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。