用单向链表样式模拟出栈和入栈
package com.yuteng.stack;
/**
-
@version 1.0
-
@author: 余腾
-
@date: 2021-07-26 11:09
*/
public class LinkedStackDemo {public static void main(String[] args) {
LinkedStack linkedStack=new LinkedStack();
MyNode node1=new MyNode(1);
MyNode node2=new MyNode(2);
MyNode node3=new MyNode(3);
MyNode node4=new MyNode(4);
MyNode node5=new MyNode(5);
linkedStack.push(node1);
linkedStack.push(node2);
linkedStack.push(node3);
linkedStack.push(node4);
linkedStack.push(node5);
linkedStack.show();}
}
/** -
创建一个操作链表的类
/
class LinkedStack{
//创建头节点
MyNode head=new MyNode();
int size=0;
/*-
向链表中添加数据
*/
public void push(MyNode myNode){
//定义temp帮助遍历if (head.getNext()!=null){
myNode.setNext(head.getNext());
}
head.setNext(myNode);
size++;
}
/** -
出栈
/
public void pop(){
if (head.getNext()!=null){
head.getNext().setNo(0);
head.setNext(head.getNext().getNext());
size--;
}
else {
return;
}
}
/* -
遍历 打印节点
/
public void show(){
if (head.getNext()==null){
return;
}
for (MyNode p=head.getNext();p!=null;p=p.getNext()){
System.out.println(p.getNo());
}
}
}
/*
-
-
创建一个单向链表
*/
class MyNode{
private int no;
private MyNode next;public MyNode(int no){
this.no=no;
}
public MyNode(){}
@Override
public String toString() {
return "MyNode{" +
"no=" + no +
'}';
}public int getNo() {
return no;
}public void setNo(int no) {
this.no = no;
}public MyNode getNext() {
return next;
}public void setNext(MyNode next) {
this.next = next;
}
}