用单向链表(头插法)实现栈
1.概述
用单向链表实现栈,入栈时,新建一个Node结点,并把链表的最后一个Node结点指向这个新建的Node;出栈时,将最后一个结点的值用一个临时变量保存并输出,然后将结点置为null。
2.代码实现
package com.bhy.stackTest;
public class SingleLinkedListStackDemo {
public static void main(String[] args) {
SingleLinkedListStack singleLinkedListStack = new SingleLinkedListStack();
singleLinkedListStack.push(1);
singleLinkedListStack.push(2);
singleLinkedListStack.push(3);
System.out.println(singleLinkedListStack.pol());
System.out.println(singleLinkedListStack.pol());
System.out.println(singleLinkedListStack.pol());
}
}
/**
* 使用头插法实现
*/
class SingleLinkedListStack{
private Node curNode ;//代表链表的最后一个元素
public void push(int value){
Node newNode = new Node(value, curNode);
curNode = newNode;
}
public int pol(){
if (curNode==null){
throw new RuntimeException("栈空,不能再取");
}
Node thisNode = curNode;
int temp =thisNode.value;
thisNode = null;
curNode = curNode.forward;
return temp;
}
}
class Node{
public int value;
public Node forward;//此节点的前一个结点
public Node(int value, Node forward) {
this.value = value;
this.forward = forward;
}
}
运行结果如下: