30分钟掌握-算法(用链表实现栈)演示
Posted 栗子~~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了30分钟掌握-算法(用链表实现栈)演示相关的知识,希望对你有一定的参考价值。
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
30分钟掌握-算法(用链表实现栈)演示
01 什么是栈?
栈就像一个窄桶,先进入的数据只能最后被取出来(LIFO),即先进后出,后进先出。
02 栈的结构图
03 实战
废话不多说,放我的练习demo源码,运行走起来(只供参考哈,上面注释写的蛮全的):
package com.yzy.demo.javatest.link;
/**
* 有头结点链表实现
* @author yangzhenyu
* */
public class LNode<T> {
public T data;
public LNode<T> next;
}
package com.yzy.demo.javatest.stack;
import com.yzy.demo.javatest.link.LNode;
/**
* 栈的实现,先进后出、后进先出,
* */
public class MyStack<T> {
//头部结点
private LNode<T> head;
public MyStack(){
//头部结点初始化
head = new LNode<>();
head.data = null;
head.next = null;
}
/**
* 判断栈是否为空
* */
public boolean empty(){
return head.next == null;
}
/**
* 查看栈中的元素数量
* */
public int size(){
int i = 0;
LNode<T> p = head.next;
while (p != null){
p = p.next;
i++;
}
return i;
}
/**
* 入栈 链表新增
* */
public void push(T t){
LNode<T> p = new LNode();
p.data = t;
p.next = head.next;
head.next = p;
}
/**
* 出栈, 链表删除头部结点+1位置结点
* 链表删除原理:前驱结点.next = 后继结点
* */
public T pop(){
LNode<T> p = head.next;
if (p!=null){
head.next = p.next;
System.out.println("出栈:"+p.data);
return p.data;
}
System.out.println("栈已经空了");
return null;
}
/**
* 不出栈,取得栈顶元素
* */
public T top(){
if (head.next!= null){
return head.next.data;
}
System.out.println("栈已经空了");
return null;
}
/**
* 测试
* */
public static void main(String[] args) {
MyStack<Integer> myStack = new MyStack<>();
boolean flag = true;
//入栈
System.out.println("开始入栈==============>>>>");
for (int i=0;i<=5;i++){
//奇数入栈
if (i%2!=0){
System.out.println("入栈:"+i);
myStack.push(i);
}
}
//获取栈内总数
System.out.println("获取栈内总数:"+ myStack.size());
//判断栈是否为空
System.out.println("判断栈是否为空:"+ myStack.empty());
//查询栈顶数据
System.out.println("查询栈顶数据:"+myStack.top());
//出栈
while (flag){
boolean index = myStack.pop() == null?true:false;
if (index){
flag = false;
}
}
//获取栈内总数
System.out.println("获取栈内总数:"+ myStack.size());
//判断栈是否为空
System.out.println("判断栈是否为空:"+ myStack.empty());
}
}
运行:
以上是关于30分钟掌握-算法(用链表实现栈)演示的主要内容,如果未能解决你的问题,请参考以下文章