循环队列子系统

附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("\n\t\t 输入一个入队的整数数据:");
 18    scanf("%d",&x);
 19    if (q.front==(q.rear+1) % MAXLEN )
 20    {  printf("\n\t\t 队满,不能入队! \n"); 
 21       return; 
 22    }
 23    q.rear=(q.rear+1) % MAXLEN;
 24    q.data[q.rear]=x;
 25    printf("\n\t\t 入队成功! \n");
 26 }
 27 
 28 void Outsequeue()                                          // 出队函数
 29 {  if (q.front==q.rear)
 30    {  printf ("\n\t\t 此队列为空! "); 
 31       return ;}  
 32                                                           // 队空不能出队
 33    else 
 34      {  q.front=(q.front+1) % MAXLEN;
 35         printf("\n\t\t 出队元素为:%d\n",q.data[q.front]); // 输出队头元素
 36         return; }
 37 }
 38 
 39 
 40 void ShowQueue()                                           // 显示函数
 41 {  int k=q.front;
 42    if (k==q.rear) 
 43    {  printf("\n\t\t 此队列为空! \n"); 
 44       return;
 45    }
 46    printf("\n\t\t 此队列元素为:");
 47 
 48    do 
 49      {  k=(k+1)%MAXLEN;
 50         printf("%4d",q.data[k]);
 51      } while (k!=q.rear);
 52 
 53    printf("\n");
 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("\n\t\t                  循 环 队 列                \n");
 69         printf("\n\t\t***********************************************");
 70         printf("\n\t\t*          1----------循环队列初始化          *");
 71         printf("\n\t\t*          2----------进          队          *");
 72         printf("\n\t\t*          3----------出          队          *");
 73         printf("\n\t\t*          4----------显          示          *");
 74         printf("\n\t\t*          5----------求 队 列 长 度          *");
 75         printf("\n\t\t*          0----------返          回          *");
 76         printf("\n\t\t***********************************************");
 77         printf("\n\n\t\t 请选择菜单号:  ");
 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("\n\t\t 队列长度为: %d \n",length());
 95                break;
 96            case 0: 
 97                i=0; 
 98                break;
 99         }
100    }
101 }

 

posted @ 2015-05-13 20:16  竹立荷塘  阅读(687)  评论(0编辑  收藏  举报