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

📄 3.cpp

📁 同时rear和len分别指示环形队列中队尾元素的位置和内含元素的个数。设计相应的入队和出队算法。
💻 CPP
字号:
#include <stdio.h> 
#include <stdlib.h> 
#define MAXSIZE 20                       /* 数组最大界限 */
typedef int ElemType;                    /* 数据元素类型 */
typedef  struct
   { ElemType  len[MAXSIZE];               /* 一维数组子域 */
     int  front,rear;                 /* 头、尾指针子域  */
   }sequ;                     /* 循环队列的结构体类型 */
sequ  Q1;
/*  函数声明  */
void init_Q(sequ *Q);
void out_Q(sequ *Q);
void EnQueue(sequ *Q,ElemType e);
ElemType DeQueue(sequ *Q);
/*  主函数  */
void main()
{ int k; ElemType e,x; char ch;
  init_Q( &Q1);          /* 初始化一个空循环队列 */
  do { printf("\n\n\n");
       printf("\n\n     1. 数据元素e进队列 ");
       printf("\n\n     2. 出队一个元素,返回其值");
       printf("\n\n     3. 结束程序运行");
       printf("\n======================================");
       printf("\n     请输入您的选择 (1,2,3)");
       scanf("%d",&k);
       switch(k)
	 { case 1:{ printf("\n 进队 e=?"); scanf("%d",&e);
                      EnQueue(&Q1,e); out_Q(&Q1);
		  } break;
	   case 2:{ x= DeQueue(&Q1);
                      printf("\n出队元素 : %d", x);
		  out_Q(&Q1 ); 
		 } break;
	   case 3: exit(0);
	  } /*  switch  */
	  printf("\n ----------------");
       }while(k>=1 && k<3);
     printf("\n               再见!"); 
     printf("\n        打回车键,返回。"); ch=getchar();
} /* main */

/*  初始化空队列  */
void init_Q(sequ *Q)
 { Q->front=0;   Q->rear=0;
 } /*  init_Q */
/*  输出队列的内容  */
void out_Q(sequ *Q)
 { char ch; int i;                 
 /*  不能修改队列头、尾指针 */
   if (Q->front==Q->rear) printf("\n Queue is NULL. ");
   else{ i=(Q->front+1)% MAXSIZE;
         while( i!=Q->rear){ printf("\n data=%d", Q->len[i]);
i=(i+1)%MAXSIZE; }
         printf("\n data=%d", Q->len[i]);
       }
   printf("\n 打回车键,继续。"); ch=getchar();
 } /* out_Q */
/*  进队函数  */
void EnQueue(sequ *Q,ElemType e)
 { if((Q->rear+1)%MAXSIZE==Q->front) printf("\n  Queue is Overflow!");
   else{ Q->rear=(Q->rear+1)% MAXSIZE ;
         Q->len[Q->rear]=e;
       }
 }/*  EnQueue  */








/*  出队函数 */
ElemType DeQueue(sequ *Q)
{ ElemType x;
  if(Q->front==Q->rear)
{ printf("\n Queue is NULL!");
      x=-1; 
     }
  else { Q->front=(Q->front+1)% MAXSIZE ;
       x=Q->len[Q->front];
   }
   return(x);
 } /* DeQueue  */

⌨️ 快捷键说明

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