⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhan.txt

📁 队列的顺序存储结构和操作实现 队列的顺序存储结构和操作实现
💻 TXT
字号:
#include <cstdlib>
#include <iostream>
#include<stdlib.h>

using namespace std;

typedef int ElemType;

struct Queue{
       ElemType *queue;
       int front,rear,len;//front队首元素,rear队尾元素 
       int MaxSize;
};

void InitQueue(Queue& Q)//初始化队列 
{
     Q.MaxSize=10;//初始化队列为十个元素位置 
     Q.queue=new ElemType[Q.MaxSize];//动态分配存储空间 
     Q.front=Q.rear=0;//初始队列为空 
}

void EnQueue(Queue& Q, ElemType item)//向队中插入一个元素item,若队列已满重新分配 
{
     //对存储空间使用完的处理 
     if((Q.rear+1)%Q.MaxSize==Q.front){
           int k=sizeof(ElemType);
           //扩大2倍存储空间 
           Q.queue=(ElemType*)realloc(Q.queue,2*Q.MaxSize*k);
           if(Q.rear!=Q.MaxSize-1){
                  for(int i=0;i<=Q.rear;i++)
                    Q.queue[i+Q.MaxSize]=Q.queue[i];
                    Q.rear+=Q.MaxSize;
            }
            Q.MaxSize=2*Q.MaxSize;
      }
      Q.rear=(Q.rear+1)%Q.MaxSize;
      Q.queue[Q.rear]=item;
}

ElemType OutQueue(Queue& Q)//从队列中删除元素并且返回 
{
         if(Q.front==Q.rear){
            cerr<<"队列为空,无法删除"<<endl;
            exit(1);
         }
         Q.front=(Q.front+1)%Q.MaxSize;//使队首指针指向下一个位置 
         return Q.queue[Q.front];//返回队首元素 
}

ElemType PeekQueue(Queue& Q)//读取队列元素 
{
         if(Q.front==Q.rear){
               cerr<<"队列为空,无法读取"<<endl;
               exit(1);
         }
         return Q.queue[(Q.front+1)%Q.MaxSize];
} 

bool EmptyQueue(Queue& Q)//判断队列是否为空 
{
     return Q.front==Q.rear;
}

void ClearQueue(Queue& Q)//清除队列元素 
{
     if(Q.queue!=NULL) delete [] Q.queue;
     Q.front=Q.rear=0;
     Q.queue=NULL;
     Q.MaxSize=0;
}

int main(int argc, char *argv[] )
{
   Queue q;
   int a[6]={1,2,3,4,5,6};
   int i;
   for(i=0;i<6;i++) EnQueue(q,a[i]);
   cout<<OutQueue(q); 
    
   system("PAUSE");
   return EXIT_SUCCESS;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -