数组实现固定大小的队列

数组实现固定大小的队列

前言

栈:正常用数组实现便可


队列:环形数组(两个指针相互追赶)
环形数组:初始化问题有点麻烦
新增一个size变量,解耦指针追赶

1. java代码如下

public static class MyQueue {
    
    
		private int[] arr;
		private int pushi;// end
		private int polli;// begin
		private int size;
		private final int limit;

		public MyQueue(int limit) {
    
    
			arr = new int[limit];
			pushi = 0;
			polli = 0;
			size = 0;
			this.limit = limit;
		}

		public void push(int value) {
    
    
			if (size == limit) {
    
    
				throw new RuntimeException("队列满了,不能再加了");
			}
			size++;
			arr[pushi] = value;
			pushi = nextIndex(pushi);
		}

		public int pop() {
    
    
			if (size == 0) {
    
    
				throw new RuntimeException("队列空了,不能再拿了");
			}
			size--;
			int ans = arr[polli];
			polli = nextIndex(polli);
			return ans;
		}

		public boolean isEmpty() {
    
    
			return size == 0;
		}

		// 如果现在的下标是i,返回下一个位置
		private int nextIndex(int i) {
    
    
			return i < limit - 1 ? i + 1 : 0;
		}

	}

猜你喜欢

转载自blog.csdn.net/ws13575291650/article/details/113695678