首页 > 试题广场 >

优先级消息队列。

[问答题]

优先级消息队列。不妨将消息抽象成一个整数,该整数值代表消息的优先级,优先级消息队列是一个这样的队列:任何时间都可能有消息入队列;任何时间都有可能有消息出队列,但只能弹出当前保存的优先级最高的消息;撰写代码实现 enQueue deQueue ,并对时间复杂度和空间复杂度进行分析,如果来不及编写程序,可简述思路,包括可能遇到的问题以及使用的核心数据结构。 Class CPriorityMsgQueue{ public // 任意消息入队列 void enQueue(int msg);// 优先级最高的消息弹出队列 int deQueue();private:// 可以自行添加需要的私有数据成员 }

class CPriorityMsgQueue{
    private  Stack<Integer> queue =  new Stack<Integer>();
    private Stack<Integer> temp = new Stack<Integer>();
    
    public void enQueue(int msg){
        while(!queue.isEmpty()&&msg<queue.peek())
            temp.push(queue.pop());
        queue.push(msg);
        while(!temp.isEmpty())
            queue.push(temp.pop());
    }
    
    public int deQueue() throws NoSuchElementException{
        return queue.pop();
    }
    
    public int getSize(){
        return queue.size();
    }
}

发表于 2017-02-28 12:05:46 回复(0)