zoukankan      html  css  js  c++  java
  • 算法导论11:优化后的数组实现的队列 2016.1.11

      本来想假期再继续,结果发现写博客已经成了总结自己的一种习惯,所以还是继续写吧。

      其实有一部分原因是今天英语考砸了。。哈哈,不管那些了,看来以后学习方式得改变一下,不能太功利,从简单开始,一点一点做好。

      今天是队列的数组优化。昨天的队列有一个致命弱点,就是能盛放的数据数量越来越少,至于原因可以自己思考也可以上网搜索。如果是链表实现的话因为是动态分配空间,就完全不会有这个问题。

      优化就是用了取模运算,实现数组空间的循环运用。

    下面是代码:

    #include<stdio.h>
    
    #define MAXTOP 10 
    
    struct _queue {
        int head,tail;
        int num[MAXTOP+1];
    }s;
    
    void init(struct _queue &S)
    {
        S.head=0;
        S.tail=1;
    }
    
    int sempty(struct _queue &S)
    {
        if ((S.head+1)%(MAXTOP+1)==S.tail) return 1;
        else return 0;
    }
    
    void enqueue(struct _queue &S,int n)
    {
        if ((S.tail+1)%(MAXTOP+1)==S.head) {
            printf("队列溢出!
    ");
        }
        else {
            S.num[S.tail]=n;
            S.tail=(S.tail+1)%(MAXTOP+1);
        }
    }
    
    int dequeue(struct _queue &S)
    {
        if (sempty(S)) {
            printf("空队列!
    ");
        }
        else {
            S.head=(S.head+1)%(MAXTOP+1);
            int k=S.num[S.head];
            return k;
        }
    }
    
    void showqueue(struct _queue S)
    {
        while (!sempty(S)){
            int k=dequeue(S);
            printf("|%d|
    ",k);
        }
        printf("| |
    ");
    }
    
    int main()
    {
        int n;
        init(s);
        while (1) {
            printf("1:初始化队列;2:入队列;3:出队列;4:退出。
    ");
            int k;
            scanf("%d",&k);
            switch(k) {
                case 1:init(s); break;
                case 2:scanf("%d",&n); enqueue(s,n); break;
                case 3:dequeue(s); break;
                case 4:return 0;
            }
            showqueue(s);
        }
        return 0;
    }
  • 相关阅读:
    Android 关于ExpandableListView控件setOnChildClickListener无效问题
    Android SnapHelper
    Android java判断字符串包含某个字符段(或替换)
    Android中的CharSequence和String
    Java时间和时间戳的相互转换
    比较运算符和函数(四十一)
    数值运算符和函数(四十)
    字符函数(三十九)
    多表删除(三十八)
    无限级分类表设计(三十七)
  • 原文地址:https://www.cnblogs.com/itlqs/p/5122600.html
Copyright © 2011-2022 走看看