• 循环队列子系统


    附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 }
  • 相关阅读:
    电话续
    邀请
    Detecting versions of IE
    Android命令行
    电话
    性格形容词
    .NET 异常处理
    uva 10161 Ant on a Chessboard
    转载 ACM训练计划
    uva 253 Cube painting
  • 原文地址:https://www.cnblogs.com/daipianpian/p/4501570.html
Copyright © 2020-2023  润新知