• c++实现循环队列


    #include <iostream>
    #include<stdio.h>
    #include<stdlib.h>
    
    using namespace std;
    int len=10;// the len of the que
    typedef struct que{
    int *qbase;
    int fr;
    int tr;
    }ques;
    bool isempty(ques *ptr)
    {
        if(ptr->fr==ptr->tr)
        {
            return true;
        }
        return false;
    
    }
    bool isfull(ques *ptr)
    {
        if((ptr->tr+1)%len==ptr->fr)
        {
            return true;
        }
        return false;
    }
    void initque(ques *ptr)
    {
      ptr->qbase=(int *)malloc(sizeof(int)*len);
      //不判断内存是否申请失败了哈。。。
      ptr->fr=ptr->tr=0;
    }
    void enque(ques *ptr,int val)
    {
      if(isfull(ptr))
      {
          cout<<"满了,填不进去了"<<endl;
      }
      else{
    
        ptr->qbase[ptr->tr]=val;
        ptr->tr=(ptr->tr+1)%len;
        cout<<"en que ok"<<endl;
      }
    
    }
    void dque(ques *ptr)
    {
        if(isempty(ptr))
        {
            cout<<"队列空了"<<endl;
        }
        else{
            ptr->qbase[ptr->fr]=0;
            ptr->fr=(ptr->fr+1)%len;
        }
    
    }
    void printque(ques *q)
    {
        if(isempty(q))
        {
            cout<<"空队列"<<endl;
        }
        else{
            int i=q->fr;
            while(i!=q->tr)
            {
                cout<<q->qbase[i]<<"  "<<endl;
                i=(i+1)%len;
            }
        }
    }
    int main()
    {
        ques q={NULL,0,0};//表示一个队列
    
        cout<<isfull(&q)<<endl;
        cout<<isempty(&q)<<endl;
        initque(&q);
        enque(&q,23);
        enque(&q,83);
        enque(&q,293);
        enque(&q,213);
        dque(&q);
        printque(&q);
        cout << "Hello world!" << endl;
        return 0;
    }
  • 相关阅读:
    八、springboot 简单优雅的通过docker-compose 构建
    【并发编程】ThreadLocal其实很简单
    计算机网络
    相似度
    不同激活函数的区别
    快速排序+归并排序
    xgboost
    c++面试
    PCA算法和SVD
    各种排序算法的时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/8335IT/p/5990114.html
Copyright © 2020-2023  润新知