结果示意图
请点击此处输入图片描述
LinkedList数据结构是一种双向的链式结构,每一个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素,和数组的顺序存储结构(如:ArrayList)相比,插入和删除比较方便,但修改和查询速度会慢一些。
栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。 (1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。 (2)当表中没有元素时称为空栈。 (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表。 栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中”最新”的元素,也就是最先插入的元素最后弹栈,就像弹夹一样
栈的特点就是先进后出,而linkedlist有两个方法,public void addLast(E e); 向后增加,也就是先进的原则 public E removeLast() 删除第一个元素,也就是后出的原则,利用linkedlist的这两个特有功能就可以模拟栈数据结构
package com.fenxiangbe.list;
import java.util.LinkedList;
public class Demo_Linkedlist3 {
public static void main(String[] args) {
LinkedList<String> l = new LinkedList<>();
//模拟进栈
l.addLast(“a”);
l.addLast(“b”);
l.addLast(“c”);
l.addLast(“d”);
System.out.println(“进栈的顺序是:” + l);
//模拟弹栈
System.out.print(“弹栈的顺序是:”);
while(!l.isEmpty()){
System.out.print(l.removeLast());
}
}
}
以上代码看似是达到模拟栈数据结构先进后出,结果也达到了,但是真正的模拟栈数据结构,就需要创建一个类将Linked中的方法封装
package com.fenxiangbe.list;
import java.util.LinkedList;
public class Stack {
private LinkedList l = new LinkedList();
//模拟进栈方法
public void in(Object o){
l.addLast(o);
}
//模拟出栈方法
public Object out(){
return l.removeLast();
}
//模拟栈结构是否为空
public boolean isEmpty(){
return l.isEmpty();
}
@Override
public String toString() {
return “” + l + “”;
}
}
package com.fenxiangbe.list;
public class Demo_Linkedlist3 {
public static void main(String[] args) {
Stack s = new Stack();
s.in(“a”);
s.in(“b”);
s.in(“c”);
s.in(“d”);
System.out.println(“进栈的顺序是:” + s);
System.out.print(“弹栈的顺序是:”);
while(!s.isEmpty()){
System.out.print(s.out());
}
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有