zoukankan      html  css  js  c++  java
  • 题目1415:不一样的循环队列------注意细节小地方循环队列注意%M;还有为什么M要加一!!!!!!!!!!!!!

    #include<stdio.h>
    #include<stdlib.h>
    #include<cstring>
    
    int  queue[100001];
    int N,M;
    int front,tail;
    void init()
    {
        front=0;
        tail=0;
    }
    int empty()
    {
        if (front==tail) return 1;
        else return 0;
    }
    int full()
    {
        if(front==(tail+1)%M) return 1;
        else return 0;
    }
    int push(int k)
    {
        if(!full())
        {
            queue[tail]=k;
            tail=(tail+1)%M;
            return 1; 
        }
        return 0;
    }
    int pop()
    {
        if(!empty())
        {
            front=(front+1)%M;
            return 1;
        }
         return 0;
    }
    int query(int k,int &r)
    {
        if(k<1 || k>(tail-front+M)%M)
           return 0;
        else 
         {
             r=queue[(front+k-1)%M];
             return 1;
         } 
    }
    int main()
    { 
        int i,j,k;
        while(scanf("%d %d",&N,&M)!=EOF)
        {
            M++;////??????????为什么为什么加一 
            init();
            char str[10];
            for(i=0;i<N;i++) 
            {
                scanf("%s",str);
                if (strcmp("Push",str)==0)
                {
                   scanf("%d",&k);
                   if(push(k)==0) printf("failed
    ");    
                }
                else if(strcmp("Pop",str)==0)
                {
                    if(pop()==0) printf("failed
    ");
                }
                else if(strcmp("Query",str)==0)
                {
                    scanf("%d",&k);
                    int rt;
                    if(query(k,rt)==0) printf("failed
    ");
                    else printf("%d
    ",rt);
                        
                }
                else if(strcmp("Isempty",str)==0)
                {
                    if(empty()==1) printf("yes
    ");
                    else printf("no
    ");
                }
                else if(strcmp("Isfull",str)==0)
                {
                    if(full()==1) printf("yes
    ");
                    else printf("no
    ");
                }
                   
            }
        }    
        return 0; 
    }
  • 相关阅读:
    排序算法---堆排序

    排序算法---希尔排序
    简单排序算法
    Jave 垃圾回收查看工具--jstat
    Linux 查看进程IO状态
    vittualenv 和mkvirtualenv
    服务器被当作了肉机去挖矿的解决办法
    pycharm的函数注释 和 父子组件传递
    git初始化操作
  • 原文地址:https://www.cnblogs.com/jianrenguo/p/6550144.html
Copyright © 2011-2022 走看看