//链栈
class LinkedStack<T>{
//头指针
private Node<T> head;
//创建一个不带头结点的链栈
public LinkedStack() {
}
//判断栈是否为空
public boolean isEmpty(){
return head == null;
}
//进栈
public void add(T t){
//先判断栈是否为空
if(isEmpty())
head = new Node<>(t);
else{
Node<T> newnode = new Node<>(t);
newnode.next = head;
head = newnode;
}
}
//出栈
public T remove(){
//先判断栈是否为空
if (isEmpty())
return null;
T result = head.data;
head = head.next;
return result;
}
//获取栈顶元素
public T getElem(){
//先判断栈是否为空
if (isEmpty())
return null;
return head.data;
}
//遍历栈
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
Node<T> node = head;
//遍历栈
while (node!=null){
if(node.next==null)
sb.append(node.data);
else
sb.append(node.data+",");
node = node.next;
}
return "["+sb.toString()+"]";
}
}
//链表节点
class Node<T>{
//数据域
T data;
//指针域
Node<T> next;
//创建一个空节点
public Node(){
}
//创建一个带有数据的头节点
public Node(T data) {
this.data = data;
}
}
链栈-java实现
最新推荐文章于 2024-10-20 21:50:12 发布