zoukankan      html  css  js  c++  java
  • 顺序队列的基本操作(进行了修改解决了假溢出问题)

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #define MAXSIZE 5
      4 
      5 typedef int ElemType;
      6 //队列结构体 
      7 typedef struct{
      8     ElemType data[MAXSIZE];
      9     int front,rear;//队头与队尾指针 (实际就是两个变量)
     10 }SqQueue; 
     11 //初始化顺序队列
     12 int InitQueue(SqQueue *S){
     13     S->front=S->rear=0;
     14     //指针赋0,就是不指向任何对象,相当于NULL。 
     15 }
     16 //销毁队列
     17 int  DestroyQueue(SqQueue *S){
     18     
     19 }
     20 //判断队列为空
     21 int IsEmpty(SqQueue *S){
     22     if(S->front==S->rear){
     23         return 1;
     24     }
     25     return 0;
     26 } 
     27 //判断队列以满
     28 //int IsFull(SqQueue *S){
     29 //    if(S->rear==MAXSIZE&&S->front==0){
     30 //        return     printf("队满
    ");;
     31 //    }else if(S->rear==MAXSIZE&&S->front!=0){
     32 //       return printf("队满,但队内前端依然有空位
    "); 
     33 //    }
     34 //    return 0; 
     35 //} 
     36 
     37 //进队运算算法
     38 int EnQueue(SqQueue *S){
     39     if(S->rear==MAXSIZE&&S->front==0){
     40         return     printf("队满
    ");;
     41     }else if(S->rear==MAXSIZE&&S->front!=0){
     42        return printf("队满,但队内前端依然有空位
    出现假溢出现象
    "); 
     43     } 
     44     int n;
     45     printf("请输入你想入队的值
    ");
     46     scanf("%d",&n); 
     47     S->data[S->rear]=n; 
     48     S->rear=S->rear+1;
     49 //    S->front=S->front+1;
     50     return printf("进队成功
    ");
     51 }
     52 //输出队列元素
     53 int DisElem(SqQueue *S){
     54     if(IsEmpty(S)){
     55         return printf("队内是空无法输出
    ");
     56     }
     57     int i=S->front;//i=0
     58     printf("队内元素有:
    "); 
     59     for(int n=0;i<S->rear;n++){
     60         printf("%3d",S->data[i]);
     61         i++;
     62     }
     63     printf("
    ");
     64     return printf("输出成功");
     65 }
     66 //获取队首元素
     67 int GetHead(SqQueue *S){
     68     if(IsEmpty(S)){
     69         return printf("队内是空
    ");
     70     }
     71     return printf("队首元素为
    %d",S->data[S->front]); 
     72 }
     73 int GetLength(SqQueue *S){
     74     if(IsEmpty(S)){
     75         return printf("队内为空
    ");
     76     }
     77     return printf("队的长度为%d",S->rear); 
     78     
     79 }
     80 //出队
     81 int DeleteQueue(SqQueue *S){
     82     if(IsEmpty(S)){
     83         return printf("队内是空无法输出
    ");
     84     }
     85       int x;
     86 //    SqQueue *temp=S->front;
     87       x=S->data[S->front];
     88       S->front=S->front+1;
     89       return printf("出队的元素为%d
    ",x);
     90 }
     91 //使前端空位补上解决假溢出问题 
     92 int FrontQueue(SqQueue *S){
     93     if(S->rear==MAXSIZE&&S->front!=0){
     94         int n;
     95         while(S->front!=0){
     96         S->front=S->front-1;
     97         printf("请输入你想入队的数
    ");
     98         scanf("%d",&n);
     99         S->data[S->front]=n;
    100       }
    101       printf("你已经成功填补空位"); 
    102     }
    103     return printf("现在未出现假溢出现象
    ");
    104 } 
    105 int main(){
    106     SqQueue S;
    107     int n;
    108     InitQueue(&S);
    109     while(true){
    110   printf("|||||||||||||||||||||||||||||||||||||||||||||||
    ");
    111   printf("||  1:入队                                  ||
    ");
    112   printf("||  2:查看队伍元素                          ||
    ");
    113   printf("||  3:查看队首元素                          ||
    ");
    114   printf("||  4:查看队列长度                          ||
    ");
    115   printf("||  5:出队                                  ||
    ");
    116   printf("||  6:使前端空位补上解决假溢出问题          ||
    ");
    117   printf("||  (输入-1退出系统)                         ||
    ");
    118   printf("|||||||||||||||||||||||||||||||||||||||||||||||
    ");
    119         
    120         printf("请输入你的操作序号
    ");
    121         scanf("%d",&n);
    122         switch(n){
    123             case 1:
    124                 EnQueue(&S);
    125                 break;
    126             case 2:
    127                 DisElem(&S);
    128                 break;
    129             case 3:
    130                 GetHead(&S);
    131                 break;
    132             case 4:
    133                 GetLength(&S);
    134                 break;
    135             case 5:
    136                 DeleteQueue(&S);
    137                 break;
    138             case 6:
    139                 FrontQueue(&S);
    140                 break;        
    141             case -1:
    142                 return 0;     
    143             
    144         }
    145         
    146     } 
    147 }
  • 相关阅读:
    78. Subsets
    93. Restore IP Addresses
    71. Simplify Path
    82. Remove Duplicates from Sorted List II
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    312. Burst Balloons
    程序员社交平台
    APP Store开发指南
    iOS框架搭建(MVC,自定义TabBar)--微博搭建为例
  • 原文地址:https://www.cnblogs.com/longlonglonglong/p/10999767.html
Copyright © 2011-2022 走看看