Java集合框架篇-48-LinkedList模拟栈和队列数据结构

      本篇先来了解两种数据结构,什么是栈,什么是队列它们各自的特点,然后利用LinkedList来分别用代码模拟两种数据结构的特点。

1.什么是栈

      之前,我们画内存图,接触了栈内存和堆内存,并没有解释什么是栈。栈是一种数据结构,有一个鲜明的特点,先进后出。先进后出,生活中有很多这样例子。例如袋装的切片面包,第一个切片肯定是先放入,如果用户不破坏包装结构,最底层的切片是最后被取出,这就是先进后出。

2.什么是队列

      队列和栈相反,特点是先进先出。例如在一个管道中的流动的水,只有管道前面的水从另外一侧流出,后面的水才能继续流出。如果发生堵塞,前面水出不去,后面的也出不去,必须是先进先出的效果。

3.LinkedList模仿栈的出栈和入栈

      我们在一个包下,写两个文件,一个是封装相关方法的Stack.java,另外一个是测试类。

package list;

import java.util.LinkedList;

public class Stack {
	private LinkedList list = new LinkedList();
	
	//模拟进栈
	public void in(Object obj) {
		list.addLast(obj);
	}
	
	//模拟出栈
	public Object out() {
		return list.removeLast();
	}
	
	//判断是否为空
	public boolean isEmpty() {
		return list.isEmpty();
	}
}

上面实际还是利用LinkedList的添加尾部元素和删除尾部元素的方法来实现先进后出功能。

package list;


public class Demo1_LinkedList {

	public static void main(String[] args) {
		Stack s = new Stack();
		//模拟进栈
		s.in("a");
		s.in("b");
		s.in("c");
		s.in("d");
		
		while(!s.isEmpty()) {		// 为空判断,不为空就弹栈
			System.out.println(s.out());		//模拟弹栈
		}

	}

}

输出:

d
c
b
a

4.LinkedList模仿队列操作

还是和上面一样,写两个类文件。封装一个队列Queue.java

package list;

import java.util.LinkedList;

public class Queue {
	private LinkedList list = new LinkedList();
	
	//模拟队列的进
	public void in(Object obj) {
		list.addLast(obj);
	}
	
	public boolean isEmpty() {
		return list.isEmpty();
	}
	
	//模拟队列的出
	public Object out() {
		return list.removeFirst();
	}
}

写一个测试类

package list;


public class Demo1_LinkedList {

	public static void main(String[] args) {
		Queue q = new Queue();
		
		q.in("a");
		q.in("b");
		q.in("c");
		q.in("d");
		
		while(!q.isEmpty()) {
			System.out.println(q.out());
		}

	}

}

输出:

a
b
c
d


  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值