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

📄 循环队列.cpp

📁 C++经典算法源码绝对的经典好的算法源码
💻 CPP
字号:
//* * * * * * * * * * * * * * * * * * * * * * * *
//*CHAPTER          :3  (3_5)                   *
//*PROGRAM          :循环队列                   *
//*CONTENT          :初始化,入队列,出队列     *
//* * * * * * * * * * * * * * * * * * * * * * * *
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAXQSIZE  5
enum BOOL{False,True};
typedef struct         //定义队列结构
{char  elem[MAXQSIZE]; //队列体
 int front;            //队头指针
 int rear;             //队尾指针
}SqQueue;
void initial(SqQueue &);    //初始化一个队列
BOOL En_SqQueue(SqQueue &,char);   //将一个元素入队列
BOOL De_SqQueue(SqQueue &,char &); //将一个元素出队列
void Print_SqQueue(SqQueue);//显示队列中所有元素
void main()
{SqQueue S;
 char ch,j;
 int flag=1;
 BOOL temp;
 textbackground(3);  //设定屏幕颜色
 textcolor(15);
 //---------------------程序解说-----------------------
 printf("本程序实现循环队列的操作。\n");
 printf("可以进行入队列,出队列等操作。\n");
 //----------------------------------------------------
 clrscr();
 initial(S);       //初始化队列
 while(flag)
    { printf("请选择\n");
      printf("1.显示队列所有元素\n");
      printf("2.入队列\n");
      printf("3.出队列\n");
      printf("4.退出程序\n");
      scanf(" %c",&j);
      switch(j)
	{case '1':Print_SqQueue(S);   //显示队列中所有元素
		  break;
	 case '2':printf("请输入队的元素(一个字符):");
		  scanf(" %c",&ch);   //输入要入队列的字符
		  temp=En_SqQueue(S,ch);//入队列
		  if(temp==False) printf("队列已满!\n");
		  Print_SqQueue(S);
		  break;
	 case '3':temp=De_SqQueue(S,ch);  //出队列
		  if(temp!=False) {printf("删除了一个元素:%c\n",ch);//若队列不空,显示出队列的元素
			      Print_SqQueue(S);
			     }
		else printf("队列为空!\n");//否则队列为空
		break;
	 default:flag=0;printf("程序运行结束,按任意键结束!\n");
	}
    }
 getch();
}

void initial(SqQueue &Q)   
{//队列初始化
 Q.front=Q.rear=0; //队头指针及队尾指针同置为0
}

BOOL En_SqQueue(SqQueue &Q,char ch)
{//入队列,成功返回True,失败返回False
 if((Q.rear+1)%MAXQSIZE==Q.front) return False; //若队列已满,返回False
 Q.elem[Q.rear]=ch;        
 Q.rear=(Q.rear+1)%MAXQSIZE; //修改队尾指针
 return True;
}

BOOL De_SqQueue(SqQueue &Q,char &ch)
{//出队列,成功返回True,并用ch返回该元素值,失败返回False
 if(Q.front==Q.rear) return False; //若队列已空,返回True
 ch=Q.elem[Q.front];           
 Q.front=(Q.front+1)%MAXQSIZE; //修改队头指针  
 return True;                  //成功出队列,返回True
}

void Print_SqQueue(SqQueue Q)      
{//显示队列中所有元素
 int i;
 if(Q.front==Q.rear) printf("队列为空!\n");
 else {i=Q.front;
       while(i!=Q.rear)
	{printf("%c ",Q.elem[i]);
	 i++;
	 if(i>=MAXQSIZE) i=i%MAXQSIZE;
	}
      printf("\n");
     }
}

⌨️ 快捷键说明

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