链表实现栈

亦凉 2021-11-14 11:42 532阅读 0赞
  1. package com.Stack;
  2. /**
  3. * @Auther: 大哥的叔
  4. * @Date: 2019/7/31 17:27
  5. * @Description:
  6. */
  7. public class LinkedListStackDemo {
  8. public static void main(String[] args) {
  9. LinkedListStack linkedListStack = new LinkedListStack();
  10. linkedListStack.push(1);
  11. linkedListStack.push(2);
  12. linkedListStack.push(3);
  13. System.out.println("栈里面值的个数为:"+linkedListStack.getLength());
  14. linkedListStack.pop();
  15. }
  16. }
  17. class LinkedListStack{
  18. int replace = -1;
  19. private Stack headnode = new Stack(replace);
  20. public boolean isEmpty(){
  21. return headnode == null;
  22. }
  23. public void push(int data){//入栈
  24. if(headnode.getData()==replace){//判断头结点的值为空的时候
  25. headnode.setData(data);
  26. }
  27. else if(headnode==null){
  28. headnode=new Stack(data);
  29. } else {
  30. Stack newnode=new Stack(data);
  31. newnode.setNext(headnode);
  32. headnode=newnode;
  33. }
  34. }
  35. public int pop(){//出栈(返回栈顶的值,并且删除)
  36. int data=replace;
  37. if(isEmpty()){
  38. System.out.println("栈为空,返回值为0");
  39. return 0;
  40. }
  41. data=headnode.getData();
  42. headnode=headnode.getNext();
  43. return data;
  44. }
  45. public int top(){//返回栈顶的值,但是不删除
  46. int data=replace;
  47. if(isEmpty()){
  48. System.out.println("栈为空,返回值为0");
  49. return 0;
  50. }
  51. data=headnode.getData();
  52. return data;
  53. }
  54. public int getLength(){//得到栈里面值的个数
  55. int count=0;
  56. Stack tempnode=headnode;
  57. if(isEmpty()||tempnode.getData()==replace)//当头结点为空,并且值也为空的时候就返回0
  58. {
  59. count=0;
  60. } else
  61. {
  62. while(tempnode!=null)
  63. {
  64. count++;
  65. tempnode=tempnode.getNext();
  66. }
  67. }
  68. return count;
  69. }
  70. }
  71. class Stack{
  72. private int data;
  73. private Stack next;
  74. public Stack (int data) {
  75. this.data = data;
  76. }
  77. public int getData () {
  78. return data;
  79. }
  80. public void setData (int data) {
  81. this.data = data;
  82. }
  83. public Stack getNext () {
  84. return next;
  85. }
  86. public void setNext (Stack next) {
  87. this.next = next;
  88. }
  89. }

发表评论

表情:
评论列表 (有 0 条评论,532人围观)

还没有评论,来说两句吧...

相关阅读

    相关 代码实现

    定义 > 栈是一种基于先进后出(FILO)的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出 > 的原则存储数据,先进入的数据被压入栈底,最后

    相关 线性算法实现

    链栈介绍 链栈也是我们所说的采用链式存储结构的栈。往往通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分

    相关 利用单实现

    栈是一种仅限于在头尾操作的数据结构,和队列相反,栈的特点是“现金后出”,因此又称为LIFO。 和队列一样,栈也有链表和数组两种实现方式,各自的优缺点和介绍队列时提到的基本相同