当前位置:   article > 正文

java利用链表实现栈_java链表写栈的示例

java链表写栈的示例

在前面,写了怎么利用数组来实现栈,以及动态数组的利用。今天我们就利用链表的方式来实现栈,我们知道链表存储数据只要内存够,就可以放足够多的数据,这也就解决了数组带来的弊端。

链表类:

  1. public class LLNode {
  2. private Object data;//存放数据
  3. private LLNode next;//指向下一个节点
  4. public LLNode(){
  5. }
  6. public LLNode(Object data){
  7. this.data=data;
  8. }
  9. public Object getData() {
  10. return data;
  11. }
  12. public void setData(Object data) {
  13. this.data = data;
  14. }
  15. public LLNode getNext() {
  16. return next;
  17. }
  18. public void setNext(LLNode next) {
  19. this.next = next;
  20. }
  21. }

实现栈的类:

   

  1. public class LLStack {
  2. LLNode headnode=null;
  3. public LLStack(){
  4. headnode=new LLNode(null);//先初始化
  5. }
  6. public boolean isEmpty(){//判断是否为空的
  7. return headnode==null;
  8. }
  9. public void push(Object data){//入栈
  10. if(headnode.getData()==null){//判断头结点的值为空的时候
  11. headnode.setData(data);
  12. }
  13. else if(headnode==null){
  14. headnode=new LLNode(data);
  15. }
  16. else {
  17. LLNode newnode=new LLNode(data);
  18. newnode.setNext(headnode);
  19. headnode=newnode;
  20. }
  21. }
  22. public Object pop(){//出栈(返回栈顶的值,并且删除)
  23. Object data=null;
  24. if(isEmpty()){
  25. System.out.println("栈为空,返回值为0");
  26. return 0;
  27. }
  28. data=headnode.getData();
  29. headnode=headnode.getNext();
  30. return data;
  31. }
  32. public Object top(){//返回栈顶的值,但是不删除
  33. Object data=null;
  34. if(isEmpty()){
  35. System.out.println("栈为空,返回值为0");
  36. return 0;
  37. }
  38. data=headnode.getData();
  39. return data;
  40. }
  41. public int getLength(){//得到栈里面值的个数
  42. int count=0;
  43. LLNode tempnode=headnode;
  44. if(isEmpty()||tempnode.getData()==null)//当头结点为空,并且值也为空的时候就返回0
  45. {
  46. count=0;
  47. }
  48. else
  49. {
  50. while(tempnode!=null)
  51. {
  52. count++;
  53. tempnode=tempnode.getNext();
  54. }
  55. }
  56. return count;
  57. }
  58. }

测试类:

  1. public static void main(String[] args) {
  2. LLStack llStack=new LLStack();
  3. llStack.push(1);
  4. llStack.push(2);
  5. llStack.push(3);
  6. System.out.println("栈里面值的个数为:"+llStack.getLength());
  7. llStack.pop();
  8. System.out.println("pop一个之后,栈里面的个数 为 :"+llStack.getLength());
  9. System.out.println("pop一个之后,栈顶的值为:"+llStack.top());
  10. }

测试的结果为:

代码的正确性,大家可自行测试,若有疑问,请call me!!!,谢谢您的阅读!

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

闽ICP备14008679号