当前位置:   article > 正文

利用数组或链表实现一个栈_栈可以用数组和链表两种方法实现,数组实现的栈称为顺序栈,链表实现的栈称为链式栈

栈可以用数组和链表两种方法实现,数组实现的栈称为顺序栈,链表实现的栈称为链式栈

什么是栈

栈是一种“操作受限”的线性表只允许在一端插入和删除数据

栈最大的特点就是“后进先出

栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。栈的删除操作叫做出栈。出数据也在栈顶。

 

顺序栈和链式栈

栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈

 

 

数组实现一个顺序栈

  1. public class ArrayStack {
  2. private String[] items; // 数组
  3. private int count; // 栈中元素个数
  4. private int n; //栈的大小
  5. // 初始化数组,申请一个大小为n的数组空间
  6. public ArrayStack(int n) {
  7. this.items = new String[n];
  8. this.n = n;
  9. this.count = 0;
  10. }
  11. public boolean push(String item) {
  12. if(count==n){
  13. System.out.println("栈中数据已满");
  14. return false;
  15. }
  16. items[count]=item;
  17. ++count;
  18. return true;
  19. }
  20. public String pop() {
  21. if(count==0){
  22. return "栈为空,删除失败";
  23. }
  24. String tem = items[count-1];
  25. --count;
  26. return tem;
  27. }
  28. }

 

链表实现一个链式栈

链表的尾插需要遍历寻找最后一个节点,时间复杂度为O(n),所以用头插的形式

  1. public class LinkedListStack {
  2. private static class Node {
  3. private int data;
  4. private Node next;
  5. public Node(int data, Node next) {
  6. this.data = data;
  7. this.next = next;
  8. }
  9. public int getData() {
  10. return data;
  11. }
  12. }
  13. private Node top = null;
  14. public boolean push(int value) {
  15. Node newNode = new Node(value,null);
  16. if (top == null) {
  17. top = newNode;
  18. } else {
  19. newNode.next = top;
  20. top = newNode;
  21. }
  22. return true;
  23. }
  24. public int push() {
  25. if (top == null) {
  26. System.out.println("栈为空,删除失败");
  27. return -1;
  28. }
  29. int value = top.data;
  30. top = top.next;
  31. return value;
  32. }
  33. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/581649
推荐阅读
相关标签
  

闽ICP备14008679号