结果示意图
请点击此处输入图片描述
Linkedlist定义:
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中的方法封装
步骤:
-
首先创建一个stack的类把linkedlist方法封装起来
-
然后创建一个类创建stack类的对象进行模拟
stack类的案例代码:
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 + “”;
}
}
Demo_Linkedlist3类的案例代码:
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());
}
}
}
评论前必须登录!
注册