zoukankan      html  css  js  c++  java
  • Java用链表实现堆栈

    定义

    一种线性的存储结构,实现先进后出的原则,用链表实现的时候只能从头节点开始才能实现完整的铺上,pop,peap的完整操作,不同于数组的实现,链表不需要判断栈不否满了,只需要判断是否为空。

    入栈:在头指针后面插入数据;

    出栈:把头指针后一位的数据输出;

    链表的定义

    package com.jiedada.jiegou;
    
    public class Node1 {
        private Object data;
        private Node1 next;
        public Node1() {
            this.data=null;
            this.next=null;
        }
        public Node1(Object data) {
            this.data=data;
            this.next=null;
        }
        public Object getData() {
            return data;
        }
        public void setData(Object data) {
            this.data = data;
        }
        public Node1 getNext() {
            return next;
        }
        public void setNext(Node1 next) {
            this.next = next;
        }
        
    
    }
    View Code

    链表的实现方法

    package com.jiedada.jiegou;
    
    public class Link {
        Node1 head=null;
        public Link() {
            head=new Node1();
        }
         //入栈
        public void push(Object obj) {
            Node1 node=new Node1(obj);
            //把node和head连接
            node.setNext(head.getNext());
            //把node变成head的位置
            head.setNext(node);
        }
        //是否为空
        public boolean isEempty() {
            return (head.getNext()==null);
        }
        //出栈
        public Object pop() {
            Object item=null;
            if(isEempty()) {
                System.out.println("该栈为空");
                //return item;
            }
             item=head.getNext().getData();
            head.setNext(head.getNext().getNext());
            return item;
        }
        //堆栈大小
        public int size() {
            int len = 0;
            Node1 pNode = head;
            while (pNode.getNext() != null) {
                len++;
                pNode = pNode.getNext();
    
            }
            return len;
        }
        //读取堆栈元素
        public Object peak() {
            Object item=null;
            if(isEempty()) {
                System.out.println("该栈为空");
                return item;
            }
            item=head.getNext().getData();
            return item;
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Link link=new Link();
            link.push("第一个");
            link.push("第二个");
            link.push("第三个");
            link.push("第四个");
            System.out.println(link.isEempty());
            System.out.println(link.size());
            System.out.println(link.pop());
            System.out.println(link.peak());
            System.out.println(link.size());
    
        }
    
    }
    View Code

    代码连接为:https://www.cnblogs.com/neuhao/p/6497000.html

  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/10818978.html
Copyright © 2011-2022 走看看