java数据结构——栈

学习数据结构与算法是枯燥的,但只有坚持不懈的积累,才会有硕果累累的明天。

/**
 * 继续学习Java数据结构 ————栈
 * 栈的实现其实还是使用数组,只不过我们不能直接访问数组下标,而是通过一个指针来对其进行操作
 * 栈的重要数据特性————先进后出(后进先出)
 * 压入、弹出、访问、是否空、是否满
 */
public class Stack {
	private long arr[];
	private int top;// 指针

	public Stack(int Maxsize) {// 构造函数
		arr = new long[Maxsize];
		top = -1;// 我们可以操作的指针,初始值为-1
	}

	public void push(int value) {// 压入数据
		arr[++top] = value;
	}

	public long pop() {// 弹出数据
		return arr[top--];
	}

	public long peek() {// 访问指针当前数据
		return arr[top];
	}

	public boolean isEmpty() {// 是否空
		return top == -1;// 指针初始值
	}

	public boolean isFull() {// 是否满
		return top == arr.length - 1;// 指针等于数组长度-1

	}

	public static void main(String[] args) {
		Stack s = new Stack(10);
		s.push(24);// 压入数据
		s.push(45);
		s.push(23);
		s.push(46);
		s.push(61);

		System.out.println(s.peek());// 访问当前指针指向

		while (!s.isEmpty()) {// 如果不为空
			System.out.print(s.pop() + " ");// 弹出数据,先进后出
		}
	}

}
  

  

原文地址:https://www.cnblogs.com/hardhp74520/p/11304657.html

时间: 2024-10-10 08:50:41

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数据结构之栈的实现,可是入栈,出栈操作: /** * 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.

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