1、链节点

public class Node<T> {
public T data;
public Node next;
}

2、实现代码

public class Stack<T> {
private static Node bottom; //栈底指针
private static Node top; //栈顶指针
private static Integer size; //栈当前大小 /**
* 初始化
*/
public void initStack() {
bottom = top = new Node();
top.next = bottom;
size = 0;
} /**
* 是否空
*
* @return
*/
public static boolean isEmpty() {
if (top.next == bottom) {
return true;
}
return false;
} /**
* 入栈
*
* @param element
*/
public void pushStack(T element) {
Node temp = new Node();
temp.data = element;
if (top.next == bottom)//第一次入栈操作
{
temp.next = bottom;
top.next = temp;
} else {
temp.next = top.next;
top.next = temp;
}
size++;
} /**
* 出栈
*/
public void popStack() { if (isEmpty()) {
System.out.println("栈中没有元素!");
} else {
System.out.println("出栈操作:" + top.next.data + " ");
top.next = top.next.next;
}
size--;
} /**
* 元素个数
*
* @return :个数值
*/
public int sizeStack() {
return size;
} /**
* 查看顶部值
*/
public static void getTop() {
System.out.println("顶部值:" + top.next.data);
} /**
*
* 打印放入的元素
*/
public static void printStack() {
Node temp = top;
if (isEmpty()) {
System.out.println("栈中没有元素!");
} else {
for (int i = 0; i < size; i++) {
System.out.print(temp.next.data + " ");
temp = temp.next;
}
}
System.out.println(); } public static void main(String[] args) {
Stack<Integer> integerStack = new Stack<>();
integerStack.initStack();
integerStack.pushStack(1);
printStack();
integerStack.pushStack(2);
printStack();
integerStack.pushStack(3);
printStack();
integerStack.pushStack(4);
printStack(); integerStack.popStack();
printStack();
integerStack.pushStack(4);
printStack();
integerStack.popStack();
printStack(); System.out.println("大小:" + integerStack.sizeStack()); getTop();
}

3、结果展示

1
2 1
3 2 1
4 3 2 1
出栈操作:4
3 2 1
4 3 2 1
出栈操作:4
3 2 1
大小:3
顶部值:3

4、链栈的实现(java代码)的更多相关文章

  1. 数据结构之链表、栈和队列 java代码实现

    定义抽象节点类Node: package cn.wzbrilliant.datastructure; /** * 节点 * @author ice * */ public abstract class ...

  2. 队列(链式存储)JAVA代码

      publicclassLinkQueue<T>{       //结点类     publicclassNode{         public T data;         pub ...

  3. java与数据结构(6)---java实现链栈

    栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...

  4. 数据结构——Java实现链栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...

  5. 栈的理解和代码实现(java)

    从数据结构的角度来看,其实栈也是线性表.特殊性在于栈和队列的基本操作是线性表操作的子集,栈是操作受限制的线性表. 栈的定义 栈是限定仅在表尾进行插入或者删除操作的线性表.对于一个栈来说,表尾端有着特殊 ...

  6. java使用链栈实现迷宫求解

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html java实现链栈的代码: package stackapplicatio ...

  7. java使用链栈实现数制转换

    java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...

  8. 只用120行Java代码写一个自己的区块链

    区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的.这篇文章就是帮助你使用 Java 语言来实现一个简单的区块链,用不到 120 行代码来揭示区 ...

  9. java开发区块链只需150行代码

    本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统. ...

  10. 只用120行Java代码写一个自己的区块链-3挖矿算法

    在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...

随机推荐

  1. SpringBoot中Shiro缓存使用Redis、Ehcache

    在SpringBoot中Shiro缓存使用Redis.Ehcache实现的两种方式实例 SpringBoot 中配置redis作为session 缓存器. 让shiro引用 本文是建立在你是使用这sh ...

  2. 洛谷 P3413 SAC#1 - 萌数

    题意简述 求l~r之间存在长度至少为2的回文子串的正整数的个数 题解思路 数位DP 注意到有偶数长度的回文串必有长度为2的回文串,有奇数长度的回文串必有长度为3的回文串 所以只需判断与前一位,前两位是 ...

  3. cs231n---卷积网络可视化,deepdream和风格迁移

    本课介绍了近年来人们对理解卷积网络这个“黑盒子”所做的一些可视化工作,以及deepdream和风格迁移. 1 卷积网络可视化 1.1 可视化第一层的滤波器 我们把卷积网络的第一层滤波器权重进行可视化( ...

  4. 8.7 day28 网络编程 socket套接字 半连接池 通信循环 粘包问题 struct模块

    前置知识:不同计算机程序之间的数据传输 应用程序中的数据都是从程序所在计算机内存中读取的. 内存中的数据是从硬盘读取或者网络传输过来的 不同计算机程序数据传输需要经过七层协议物理连接介质才能到达目标程 ...

  5. 【数学+思维】ZZULIOJ 1531: 小L的区间求和

    题目链接 题目描述 在给定的一个整数序列中,小L希望找到一个连续的区间,这个区间的和能够被k整除,请你帮小L算一下满足条件的最长的区间长度是多少. 输入 第一行输入两个整数n.k.(1 <= n ...

  6. SpringBoot 缓存模块

    默认的缓存配置 在诸多的缓存自动配置类中, SpringBoot默认装配的是SimpleCacheConfigguration, 他使用的CacheManager是 CurrentMapCacheMa ...

  7. Go-项目结构和代码组织

    简介 做大量的输入,通过对比.借鉴,加上自己的经验,产出一个尽可能优的方案. 开源界优秀项目的结构示例 因为最新的 Go 版本已经使用 module 作为版本依赖,所以,所有项目的 vendor 我都 ...

  8. h5中div边距去除

    style样式里面加上 <style> *{ margin:0 ;//外边距为0 padding:0;//内边距为0 } </style>

  9. Hive常用函数的使用

    Hive常用函数的使用 文章作者:foochane  原文链接:https://foochane.cn/article/2019062501.html 1 基本介绍 1.1 HIVE简单介绍 Hive ...

  10. unity之中级工程师

    主要是实际操作. Destroy(游戏对象):会真正销毁游戏对象. 动态链接库 热更新:用户不需要更新整个项目,只需要更新需要更新的部分,使用AssetBundle.PC,Android可以使用逻辑热 ...