1、链节点

  1. public class Node<T> {
  2. public T data;
  3. public Node next;
  4. }

2、实现代码

  1. public class Stack<T> {
  2. private static Node bottom; //栈底指针
  3. private static Node top; //栈顶指针
  4. private static Integer size; //栈当前大小
  5.  
  6. /**
  7. * 初始化
  8. */
  9. public void initStack() {
  10. bottom = top = new Node();
  11. top.next = bottom;
  12. size = 0;
  13. }
  14.  
  15. /**
  16. * 是否空
  17. *
  18. * @return
  19. */
  20. public static boolean isEmpty() {
  21. if (top.next == bottom) {
  22. return true;
  23. }
  24. return false;
  25. }
  26.  
  27. /**
  28. * 入栈
  29. *
  30. * @param element
  31. */
  32. public void pushStack(T element) {
  33. Node temp = new Node();
  34. temp.data = element;
  35. if (top.next == bottom)//第一次入栈操作
  36. {
  37. temp.next = bottom;
  38. top.next = temp;
  39. } else {
  40. temp.next = top.next;
  41. top.next = temp;
  42. }
  43. size++;
  44. }
  45.  
  46. /**
  47. * 出栈
  48. */
  49. public void popStack() {
  50.  
  51. if (isEmpty()) {
  52. System.out.println("栈中没有元素!");
  53. } else {
  54. System.out.println("出栈操作:" + top.next.data + " ");
  55. top.next = top.next.next;
  56. }
  57. size--;
  58. }
  59.  
  60. /**
  61. * 元素个数
  62. *
  63. * @return :个数值
  64. */
  65. public int sizeStack() {
  66. return size;
  67. }
  68.  
  69. /**
  70. * 查看顶部值
  71. */
  72. public static void getTop() {
  73. System.out.println("顶部值:" + top.next.data);
  74. }
  75.  
  76. /**
  77. *
  78. * 打印放入的元素
  79. */
  80. public static void printStack() {
  81. Node temp = top;
  82. if (isEmpty()) {
  83. System.out.println("栈中没有元素!");
  84. } else {
  85. for (int i = 0; i < size; i++) {
  86. System.out.print(temp.next.data + " ");
  87. temp = temp.next;
  88. }
  89. }
  90. System.out.println();
  91.  
  92. }
  93.  
  94. public static void main(String[] args) {
  95. Stack<Integer> integerStack = new Stack<>();
  96. integerStack.initStack();
  97. integerStack.pushStack(1);
  98. printStack();
  99. integerStack.pushStack(2);
  100. printStack();
  101. integerStack.pushStack(3);
  102. printStack();
  103. integerStack.pushStack(4);
  104. printStack();
  105.  
  106. integerStack.popStack();
  107. printStack();
  108. integerStack.pushStack(4);
  109. printStack();
  110. integerStack.popStack();
  111. printStack();
  112.  
  113. System.out.println("大小:" + integerStack.sizeStack());
  114.  
  115. getTop();
  116. }

3、结果展示

  1. 1
  2. 2 1
  3. 3 2 1
  4. 4 3 2 1
  5. 出栈操作:4
  6. 3 2 1
  7. 4 3 2 1
  8. 出栈操作:4
  9. 3 2 1
  10. 大小:3
  11. 顶部值: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. python数据类型图解

  2. 解决Springboot整合ActiveMQ发送和接收topic消息的问题

    环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...

  3. Yii2 登录报错

    当用数据库登录系统报如下错误时 PHP Recoverable Error – yii\base\ErrorException Argument 1 passed to yii\web\User::l ...

  4. error LNK2001: unresolved external symbol "__declspec(dllimport)

    作为C++的小白,出现这个错误,是最头痛的.针对这种问题,我搜了网上的相关答案,很多都是在教Project ---> Settings中改动相关设置.我改了之后,问题依旧没有解决.后面查了这种问 ...

  5. idea实现第一个springboot程序

    1.环境准备 JDK:1.8 Apache Maven: 3.6.1 IntelliJ IDEA 2019.1.3 x64 SpringBoot 1.5.9.RELEASE:1.5.9: 1.1.MA ...

  6. 第一个基于ArcGIS的Android应用

     使用Android Studio创建第一个工程 打开Android Studio,新建工程.在Application name处填写项目名称,company domain是公司地址,将来作为包名,点 ...

  7. python程序中使用MySQL数据库

    目录 python程序中使用MySQL数据库 1 pymysql连接数据库 2 sql 注入 3 增删改查操作 4 pymysql使用总结 python程序中使用MySQL数据库 1.python中使 ...

  8. Spring框架入门之AOP

    Spring框架入门之AOP 一.Spring AOP简单介绍 AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented ...

  9. MSIL实用指南-加载和保存参数

    本篇讲解怎么加载和保存参数,以及参数起始序号的确定. 参数的加载加载参数的指令是Ldarg.Ldarg_S.Ldarg_0.Ldarg_1.Ldarg_2.Ldarg_3.Ldarg_0是加载第0个参 ...

  10. spss数据分析可以被人工智能替换吗

    作为一名需要对课题进行研究的大学生,我在日常学习中经常需要用到spss,虽然老师上课已经初步教了我如何用这个软件,然而,在使用过程中我还是遇到了许多问题.具体来说,就是这个软件在很多地方都不够与时俱进 ...