java 数据结构 栈的实现

java数据结构之栈的实现,可是入栈,出栈操作;

/**
 * java数据结构之栈的实现
 * 2016/4/26
 **/
package cn.Link;

public class Stack{
    Node tail = new Node();
    Node nowNode = new Node();   //永远指向栈顶
    int size;
    Stack(){};
    Stack(String date){
        this.tail.date = date;
        this.tail.next = null;
        this.nowNode.next = this.tail;
        this.size = 1;
    }

    //节点类
    class Node{
        String date;
        Node next;
        Node(){};
        Node(String date){
            this.date = date;
        }
    }

    //向栈中插入数据
    public void Push(String date){
        Node preNode = new Node(date);
        preNode.next = this.nowNode.next;
       this.nowNode.next = preNode;
       this.size++;
       System.out.println("数据"+date+"被入栈");
    }

    //出栈操作
    public void Pop(){
        if(this.nowNode.next != this.tail){
          System.out.println("数据"+this.nowNode.next.date+"被移除栈");
          this.nowNode.next = this.nowNode.next.next;
        }else{
            nowNode.next = null;
            System.out.println("此栈没有数据,数据为空");
        }
        this.size--;
    }

    //遍历栈输出
    public void PrintStack(){
        Node preNode = new Node();
        preNode.next = this.nowNode.next;
        System.out.print("遍历输出栈: ");
        while(preNode.next != null){
            System.out.print(" -->"+preNode.next.date);
            preNode.next = preNode.next.next;
        }
        System.out.println("+++++++++++当前栈的长度为"+this.size);
    }

    //清空栈
    public void clear(){
        this.nowNode.next = null;
        this.tail = null;
        this.size = 0;
        System.out.println("栈已被清空");

    }

    public static void main(String[] args){
       Stack stack = new Stack("sum1");
        stack.Push("sum2");
        stack.Push("sum3");
        stack.Push("sum4");
        stack.Push("sum5");
        stack.Push("sum6");
        stack.Pop();
        stack.Push("sum7");
        stack.Push("sum8");
        stack.PrintStack();
        stack.clear();
    }
}
时间: 2025-01-05 16:07:57

java 数据结构 栈的实现的相关文章

java数据结构栈

栈的原则是先进后出,比如一堆摞起来的书,后放上去的会被最先拿到. 栈的特点是每次只允许访问一个元素. 栈是一种抽象出来的数据结构,它的底层存储依赖于数组和链表,下面列出它的两种实现 public interface Stack <T>{ boolean isEmpty(); void clear(); int length(); boolean push(T obj); T pop(); boolean hashNext(); } public class ArrayStack<T>

java数据结构——栈

学习数据结构与算法是枯燥的,但只有坚持不懈的积累,才会有硕果累累的明天. /** * 继续学习Java数据结构 ————栈 * 栈的实现其实还是使用数组,只不过我们不能直接访问数组下标,而是通过一个指针来对其进行操作 * 栈的重要数据特性————先进后出(后进先出) * 压入.弹出.访问.是否空.是否满 */ public class Stack { private long arr[]; private int top;// 指针 public Stack(int Maxsize) {// 构

java数据结构-栈的底层实现:数组实现压入,弹出,判断空栈测试代码

package com.stack; /** * @auther 付强 * @date 2020/2/13 - 13:08 */public class TestMystack { public static void main(String[] args) { //先创建一个栈 Mystack mystack = new Mystack(); //压入数据 mystack.push(9); mystack.push(8); mystack.push(7); mystack.push(6); m

Java数据结构和算法之栈与队列

二.栈与队列 1.栈的定义 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表. (1)通常称插入.删除的这一端为栈顶(Top),另一端称为栈底(Bottom). (2)当表中没有元素时称为空栈. (3)栈为后进先出(Last In First Out)的线性表,简称为LIFO表. 栈的修改是按后进先出的原则进行. 每次删除(退栈)的总是当前栈中"最新"的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除. 图1 [示例]元素是以a1,a2,-,a

java数据结构与算法之栈(Stack)设计与实现

[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53362993 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈设计与实现 ??本篇是jav

Java虚拟机栈和本地方法栈

Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java本地方法栈的特征 线程私有 后进先出(LIFO)栈 作用是支撑Native方法的调用.执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 有一些虚拟机(如HotSpot)将Java虚拟机栈和本地方法栈合并实现 栈帧的概念和特征 Java虚拟机栈中存储的

Java数据结构和算法之递归

四.递归 递归是函数调用自身的一种特殊的编程技术,其应用主要在以下几个方面:   阶乘 在java当中的基本形式是: Public  void  mothed(int n){//当满足某条件时: Mothed(n‐1): } 递归二分查找 Java二分查找实现,欢迎大家提出交流意见.  /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: *     1.要求所查找的数组已有序,并且其中元素已实现Comparable<T>接口,如Integ

Java数据结构和算法(二)——数组

数组的用处是什么呢?--当你需要将30个数进行大小排列的时候,用数组这样的数据结构存储是个很好的选择,当你是一个班的班主任的时候,每次要记录那些学生的缺勤次数的时候,数组也是很有用.数组可以进行插入,删除,查找等. 1)创建和内存分配 Java中有两种数据类型,基本类型和对象类型,也有人称为引用类型,Java中把数组当成对象,创建数组时使用new操作符. int array[] = new int[10]; 既然是对象,那么array便是数组的一个引用,根据Java编程思想(一) -- 一切都是

Java数据结构与算法之集合

线性表.链表.哈希表是常用的数据结构,在进行Java开发时,SDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中. 一.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object.一些Collection允许相同元素而另一些不行.一些能排序而另一些不行.Java  SDK不提供直接继承自Collection的类,Java  SDK提供的类都是继承自Collection的"子接口"如List和Set