• c语言数据结构:用标志位实现循环队列


      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 
      4 #define MAXSIZE 10//定义队列长度
      5 
      6 static int flag=0;//定义标志位
      7 
      8 typedef struct {
      9     int *base;
     10     int front;
     11     int rear;
     12 }SqQueue;//创建结构体
     13 
     14 int InitQueue(SqQueue &Q){
     15     Q.base=(int*)malloc(MAXSIZE*sizeof(int));
     16     if(!Q.base)
     17         return 0;
     18     else{
     19         Q.front=Q.rear=0;
     20         return 1;
     21     }
     22 }//创建空链表
     23 
     24 
     25 int IsEmpety(SqQueue &Q){
     26     if(flag==0&&Q.front==Q.rear){
     27         printf("队列为空
    ");
     28         return 0;
     29     }
     30     else 
     31         return 1;
     32 
     33 }//判断是否为空
     34 
     35 int IsFull(SqQueue &Q){
     36     if(flag==1&&Q.front==Q.rear){
     37         printf("队列已满
    ");
     38         return 0;
     39     }
     40     else
     41         return 1;
     42 }//判断是否已满
     43 
     44 void AddQueue(SqQueue &Q){
     45     if(IsFull(Q)==1){
     46         int e;
     47         printf("请输入元素:
    ");
     48         scanf("%d",&e);
     49         Q.base[Q.rear]=e;
     50         Q.rear=(Q.rear+1)%MAXSIZE;
     51         flag=1;
     52     }
     53 }//添加元素
     54 
     55 void DeleteQueue(SqQueue &Q){
     56     if(IsEmpety(Q)==1){
     57         int e;
     58         e=Q.base[Q.front];
     59         Q.front=(Q.front+1)%MAXSIZE;
     60         flag=0;
     61         printf("%d
    ",e);
     62     }
     63 }//删减元素
     64 
     65 void Action(SqQueue &Q){
     66     printf("1.入队
    ");
     67      printf("2.使队头元素出队,并返回它的值
    ");
     68      printf("3.退出
    ");
     69      int a;
     70      scanf("%d",&a);
     71       switch(a)
     72       {
     73       case 1:
     74      
     75           AddQueue(Q);
     76           break;
     77       case 2:
     78           
     79           DeleteQueue(Q);
     80           break;
     81       case 3:
     82           exit(0);
     83       default:
     84          printf("输入不合法,请重新输入
    ");
     85 
     86       }
     87       Action(Q);
     88 }//操作选项
     89 
     90 int main(){
     91     SqQueue Q;
     92     if(InitQueue(Q))
     93         printf("创建成功。
    ");
     94     else{
     95         printf("创建失败。");
     96         system("pause");
     97         return 0;
     98     }
     99     
    100     Action(Q);
    101     
    102     system("pause");
    103     free(Q.base);
    104     return 0;
    105 
    106 
    107 }//主函数

    虽然用标志位实现了,可是将int型数组换为char型数组时会出现错误,在此保留疑问,待解决。

  • 相关阅读:
    MFC 中 Tooltip 实现的几种方式
    C++11带来的优雅语法
    socket异步编程--libevent的使用
    单元测试与解耦
    Ubuntu(Linux) + mono + jexus +asp.net MVC3
    常见算法总结
    NET里简易实现AOP
    KMP算法
    简易的集群通讯组件
    数据访问层的封装与抽象
  • 原文地址:https://www.cnblogs.com/Unlimited-Rain/p/7634736.html
Copyright © 2020-2023  润新知