Java——认真学习数据结构与算法
# Exam01 链表模拟栈
public class LinkedLinkStackDemo {
public static void main(String[] args) {
//测试类
LinkedListStack linkedListStack = new LinkedListStack();
Node node = new Node(3);
Node node1 = new Node(5);
System.out.println("栈是否是空的:" + linkedListStack.isEmpty());
linkedListStack.push(node);
linkedListStack.push(node1);
linkedListStack.list();
System.out.println("栈是否是空的:" + linkedListStack.isEmpty());
System.out.println("=============");
linkedListStack.pop();
linkedListStack.list();
}
}
//链表模拟栈
class LinkedListStack{
private Node head = new Node(-1);
public boolean isEmpty(){
return head.getNext() == null;
}
public void list(){
Node temp = head;
while (true){
if (isEmpty()){
break;
}
if (temp.getNext() == null){
break;
}
temp = temp.getNext();
System.out.println(temp);
}
}
public void push(Node node){
Node temp = head;
while (true){
if (temp.getNext() == null){
break;
}
temp = temp.getNext();
}
temp.setNext(node);
}
public int pop(){
Node temp = head.getNext();
Node helper = head;
int temp1 ;
while (true){
if (isEmpty()){
throw new RuntimeException("栈已空,无法出栈");
}
if (temp.getNext() == null){
break;
}
helper = temp;
temp = temp.getNext();
}
temp = helper;
temp.setNext(null);
temp1 = helper.getNo();
return temp1;
}
//结点
}
class Node{
private int no;
private Node next;
public Node() {
}
public Node(int no) {
this.no = no;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
@Override
public String toString() {
return "Node{" +
"no=" + no +
'}';
}
}