Java 队列和栈的简单实现

一.队列和栈

1.队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表

2.栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表

3.队列先进先出(FIFO),栈先进后出(FILO)

二.队列实现

package com.hmi.collection;

import java.util.ArrayList;
import java.util.List;

public class Queue {
	private List<Object> list = new ArrayList<>();

	// 入队
	public void add(Object o) {
		list.add(o);
	}

	// 出队
	public Object poll() {
		if (list.size() > 0) {
			return list.remove(0);
		}
		return -1;
	}

	// 判断是否为空
	public boolean isEmpty() {
		return list.isEmpty();

	}

	public static void main(String[] args) {
		Queue q = new Queue();
		for (int i = 0; i < 5; i++) {
			System.out.println(i + "进队列");
			q.add(i);
		}
		while (!q.isEmpty()) {
			System.out.println(q.poll() + "出队列");
		}
	}
}

测试结果:

三.栈实现

package com.hmi.collection;

import java.util.LinkedList;

public class Stack {
	private LinkedList<Object> ll = new LinkedList<Object>();

	// 压栈
	public void push(Object o) {
		ll.add(o);
	}

	// 出栈
	public Object pop() {
		if (ll.size() > 0) {
			return ll.removeLast();
		}
		return -1;
	}

	// 判断是否为空
	public boolean isEmpty() {
		return ll.isEmpty();
	}

	public static void main(String[] args) {
		Stack s = new Stack();
		for (int i = 0; i < 5; i++) {
			System.out.println(i + "入栈");
			s.push(i);
		}
		System.out.println("=====");
		while (!s.isEmpty()) {
			System.out.println(s.pop() + "出栈");
		}
	}
}

测试结果:

都直接使用了list集合的方法,所以相对简单,大家如果有空可以看看Stack,Queue源码,帮助很大。

猜你喜欢

转载自blog.csdn.net/hm_135/article/details/104579381
今日推荐