/**
* 用链表实现栈
*/
public class LinkedStack {
/**
* 栈顶元素
*/
private Node stack;
/**
* 栈中元素个数
*/
private int stackSize=0;
/**
* 初始化栈
*/
public LinkedStack(){
stack=null;
}
public LinkedStack(int element){
Node node = new Node(element);
stackSize++;
stack=node;
}
/**
* 压栈,新入栈元素的next域指向原栈顶元素,并将新入栈元素置为新的栈顶元素
* @param element
*/
public void push(int element){
Node node = new Node(element,stack);
stack=node;
stackSize++;
}
/**
* 弹栈,将当前栈顶元素的next置为新的栈顶元素,返回这个元素的值
* @return
*/
public int pop(){
if(isEmpty()){
throw new RuntimeException("空栈!");
}
int element=stack.val;
stack=stack.next;
stackSize--;
return element;
}
/**
* 查看栈顶元素,如果当前栈不为空,直接返回栈顶元素的值
* @return
*/
public int peek(){
if(isEmpty()){
throw new RuntimeException("空栈!");
}
return stack.val;
}
/**
* 如果栈顶元素stack为null,则认为是空栈,返回true,否则返回false
* @return
*/
public boolean isEmpty(){
return stack==null?true:false;
}
public int size(){
return this.stackSize;
}
private class Node{
int val;
Node next;
public Node(int val){this.val=val;}
public Node(int val,Node next){this.val=val;this.next=next;}
}
}
Java用链表实现链式栈
最新推荐文章于 2024-01-23 13:00:00 发布