自定义栈和队列(java)

数据结构【栈和队列(java)】

    • 队列
    • 测试

package com.lexie.stackOrQueue;

public class MyStack {
	// 底层是数组
	private long[] arr;
	private int top;

	public MyStack() {
		arr = new long[10];
		top = -1;
	}

	public MyStack(int maxsize) {
		arr = new long[maxsize];
		top = -1;
	}

	public void push(int value) {
		arr[++top] = value;
	}

	public long pop() {
		return arr[top--];
	}

	public long peek() {
		return arr[top];
	}

	public boolean isEmpty() {
		return top == -1;
	}

	public boolean isFull() {
		return top == arr.length - 1;
	}
}

队列

package com.lexie.stackOrQueue;

public class MyQueue {
	// 底层是数组
	private long[] arr;
	// 有效数据
	private int elements;
	// 队头
	private int front;
	// 队尾
	private int end;

	public MyQueue() {
		arr = new long[10];
		elements = 0;
		front = 0;
		end = -1;
	}

	public MyQueue(int maxsize) {
		arr = new long[maxsize];
		elements = 0;
		front = 0;
		end = -1;
	}

	public void insert(long value) {
		if (end == arr.length - 1) {
			end = -1;
		}
		arr[++end] = value;
		elements++;
	}

	public long remove() {
		long value = arr[front++];
		if (front == arr.length - 1) {
			front = 0;
		}
		elements--;
		return value;
	}

	// 查看,从队头查看
	public long peek() {
		return arr[front];
	}

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

	public boolean isFull() {
		return elements == arr.length;
	}
}

测试

package com.lexie.stackOrQueue;

public class TestMyStack {
	public static void main(String[] args) {
		/*
		 * MyStack ms =new MyStack(4); ms.push(23); ms.push(12); ms.push(1);
		 * ms.push(90); System.out.println(ms.isEmpty());
		 * System.out.println(ms.isFull());
		 * 
		 * System.out.println(ms.peek()); System.out.println("弹出");
		 * while(!ms.isEmpty()){ System.out.print(ms.pop()+" "); }
		 * 
		 * System.out.println(ms.isEmpty()); System.out.println(ms.isFull());
		 */
		MyQueue mq = new MyQueue();
		mq.insert(23);
		mq.insert(41);
		mq.insert(53);
		mq.insert(2);

		System.out.println(mq.isEmpty());
		System.out.println(mq.isFull());

		System.out.println(mq.peek());

		while (!mq.isEmpty()) {
			System.out.print(mq.remove() + " ");
		}
		mq.insert(45);
		mq.insert(53);
		mq.insert(76);
		System.out.println();
		System.out.println("------------");
		while (!mq.isEmpty()) {
			System.out.print(mq.remove() + " ");
		}

	}
}

自定义栈和队列(java)_第1张图片

你可能感兴趣的:(数据结构,栈和队列java)