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

  • 相关阅读:
    vue-router的基本使用
    SQL Server加密存储过程的破解
    IIS绑定Active Directory账号自动登录网站的方法
    .Net Install类的Install、Commit等事件触发顺序
    正态分布公式
    HDU4417 Super Mario
    CodeChef
    Gym101630C Connections
    CF916C
    CF912D Fishes
  • 原文地址:https://www.cnblogs.com/xiaoruirui/p/10818978.html
Copyright © 2011-2022 走看看