如何使用LinkedList实现栈和队列结构
利用现有LinkedList中现有方法实现
使用LinkedList的addFirt作为栈的push操作,removeFirst作为栈的pop操作,具体代码如下:
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> stack = new LinkedList<>();
stack.addFirst("第1个");
stack.addFirst("第2个");
stack.addFirst("第3个");
System.out.println(stack.removeFirst());
System.out.println(stack.removeFirst());
System.out.println(stack.removeFirst());
}
}
形成类的形式
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedStack stack = new LinkedStack();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println("Pop: " + stack.pop());
System.out.println("Pop: " + stack.pop());
System.out.println("Pop: " + stack.pop());
}
}
class Node{
int data;
Node next;
public Node(int data){
this.data = data;
this.next = null;
}
}
class LinkedStack{
private LinkedList<Node> linkedList;
public LinkedStack(){
linkedList = new LinkedList<>();
}
// 入栈操作
public void push(int data){
Node newNode = new Node(data);
linkedList.addFirst(newNode);
}
// 出栈操作
public int pop(){
if(linkedList.isEmpty()){
throw new IllegalStateException("Stack is empty");
}
Node poppedNode = linkedList.removeFirst();
return poppedNode.data;
}
// 查看栈顶元素但不出栈
public int peek() {
if (linkedList.isEmpty()) {
throw new IllegalStateException("Stack is empty");
}
return linkedList.getFirst().data;
}
}