循环队列子系统

附C源程序如下:

  1 #include<stdio.h>
  2 #define MAXLEN 10
  3 
  4 typedef struct
  5  { int data[MAXLEN];                                       // 定义数据的类型
  6    int front,rear;                                         // 定义队头、队尾指针
  7  }csequeue;
  8 
  9 csequeue q; 
 10 
 11 void IniQueue()                                            // 初始化队列
 12 {  q.front=q.rear=MAXLEN-1;            
 13 }
 14 
 15 void InQueue()                                             // 入队函数
 16 {  int x ; 
 17    printf("
		 输入一个入队的整数数据:");
 18    scanf("%d",&x);
 19    if (q.front==(q.rear+1) % MAXLEN )
 20    {  printf("
		 队满,不能入队! 
"); 
 21       return; 
 22    }
 23    q.rear=(q.rear+1) % MAXLEN;
 24    q.data[q.rear]=x;
 25    printf("
		 入队成功! 
");
 26 }
 27 
 28 void Outsequeue()                                          // 出队函数
 29 {  if (q.front==q.rear)
 30    {  printf ("
		 此队列为空! "); 
 31       return ;}  
 32                                                           // 队空不能出队
 33    else 
 34      {  q.front=(q.front+1) % MAXLEN;
 35         printf("
		 出队元素为:%d
",q.data[q.front]); // 输出队头元素
 36         return; }
 37 }
 38 
 39 
 40 void ShowQueue()                                           // 显示函数
 41 {  int k=q.front;
 42    if (k==q.rear) 
 43    {  printf("
		 此队列为空! 
"); 
 44       return;
 45    }
 46    printf("
		 此队列元素为:");
 47 
 48    do 
 49      {  k=(k+1)%MAXLEN;
 50         printf("%4d",q.data[k]);
 51      } while (k!=q.rear);
 52 
 53    printf("
");
 54 }
 55 
 56 int length()
 57 {  int k;
 58    k=(q.rear-q.front+MAXLEN)% MAXLEN;
 59    return k;
 60 }
 61 
 62 int  main()                                         
 63 {  int i=1;
 64    int choice;
 65    IniQueue();
 66    while (i)
 67    {     
 68         printf("
		                  循 环 队 列                
");
 69         printf("
		***********************************************");
 70         printf("
		*          1----------循环队列初始化          *");
 71         printf("
		*          2----------进          队          *");
 72         printf("
		*          3----------出          队          *");
 73         printf("
		*          4----------显          示          *");
 74         printf("
		*          5----------求 队 列 长 度          *");
 75         printf("
		*          0----------返          回          *");
 76         printf("
		***********************************************");
 77         printf("

		 请选择菜单号:  ");
 78         scanf("%d",&choice);
 79         switch(choice)
 80         {  
 81            case 1: 
 82                IniQueue(); 
 83                break;
 84            case 2: 
 85                InQueue(); 
 86                break;
 87            case 3: 
 88                Outsequeue(); 
 89                break;
 90            case 4: 
 91                ShowQueue(); 
 92                break;
 93            case 5: 
 94                printf("
		 队列长度为: %d 
",length());
 95                break;
 96            case 0: 
 97                i=0; 
 98                break;
 99         }
100    }
101 }
原文地址:https://www.cnblogs.com/daipianpian/p/4501570.html