Circular Queue
题目地址:
https://www.careercup.com/question?id=14133666
解题思路:
这道题就是用一个array再加上3个变量,head,tail和size来控制enqueue和dequeue的位置以及corner case的handle。每次用取mod得办法来找到合适的index。
代码:
https://www.careercup.com/question?id=14133666
解题思路:
这道题就是用一个array再加上3个变量,head,tail和size来控制enqueue和dequeue的位置以及corner case的handle。每次用取mod得办法来找到合适的index。
代码:
public class CircularQueue { private int size; private int head; private int tail; private int q[]; public CircularQueue(int s) { size = 0; q = new int[s+1]; head = 0; tail = 0; } public synchronized void initialize() { head = 0; tail = 0; } public synchronized boolean enqueue(int v) { int tmp = (tail+1) % size; q[tail] = v; tail = tmp; if(size < q.length){ size++; } return true; } public synchronized int dequeue() throws Exception{ if (size == 0) throw new Exception("queue underflow!"); if(size > 0){ size--; } int tmp = q[head]; head = (head + 1) % size; return tmp; } }

Comments
Post a Comment