数据结构之栈(java)

Java - 数据结构,栈 java虚拟机栈也是栈,就是JVM中的一块内存,也是符合栈的规则 – 先进后出规则方法区:存放类定义信息、字节码、常量等数据,在Sun HotSpot JVM中,这块也称为Perm Gen。堆:创建的对象信息将放入堆中,堆内部如何实现各虚拟机各不相同,对于Sun HotSpot JVM来说又分为Young Gen和Tenured Gen,更详细描述参见《[Java性能剖析]Sun JVM内存管理和垃圾回收 》 阅读详情

栈

先进后出FILO,在表的一端进行操作

1.顺序存储

2.链式存储

class Stack{
	//顺序栈
	private int top = -1; //栈顶 ,-1表示栈为空
	
	private int size; // 栈内的元素个数
	
	private int capacity = 10; //栈的容量

	private int[] array; //存放栈元素
	
	public Stack(int capacity) {
		super();
		this.capacity = capacity;
		array = new int[capacity];
	}

	public Stack() {
		super();
		array = new int[this.capacity];
	}
	
	/**
	 * 判断栈是否为空
	 * @return
	 */
	public boolean isEmpty() {
		return this.top == -1;
	}
	
	/**
	 * 入栈 push
	 * @return
	 */
	public void push(int data) {
		//判断栈是否满了
		if(array.length == size) {
			//扩容
			increCapacity();
		}
		array[++top] = data;
		size++;
	}
	
	/**
	 * 出栈
	 * 1.栈空,抛异常
	 * 2.栈不为空:size减一,移动栈顶指针
	 * @return
	 * @throws Exception 
	 */
	public int pop() throws Exception {
		if (this.isEmpty()) {
			throw new Exception("stack is empty !");
		}
		this.size--;
		return array[this.top--];//返回栈顶元素,移动栈顶指针
	}
	
	//获取栈顶元素
	public int getTopData() {
		if (isEmpty()) {
			return -1;
		}
		return array[this.top];
	}
	
	/**
	 * 扩容
	 */
	public void increCapacity() {
		this.capacity = this.size * 2 + 1; //默认
		int[] old_array = this.array;
		array = new int[this.capacity];
		System.arraycopy(old_array, 0, array, 0, size);
	}

	public int getTop() {
		return top;
	}

	public void setTop(int top) {
		this.top = top;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}
	
}

class Node{
	
	Integer data;
	Node last;
	public Node(int data,Node last) {
		super();
		this.data = data;
		this.last = last;
	}
	public Node(int data) {
		super();
		this.data = data;
	}
	
	public Node() {
		super();
	}
	
	
	
}

class LinkStack{
	//链式栈
	 private Node top;
	 
	 private int size;
	 
	public LinkStack() {
		this.top = new Node();
	}
	
	/**
	 * 入栈
	 * 1. null 不允许入站
	 * 2. 判断是否为空栈
	 * @throws Exception 
	 */
	public void push(Integer data) throws Exception {
		if (data == null) {
			throw new Exception(" data can't be null");
		}else if (isEmpty() ) {
			Node node = new Node(data,null);
			this.top = node;
		}else {
			Node node = new Node(data,this.top);
			this.top = node;
		}
		size++;
	}
	
	/**
	 * 出zhan
	 * @throws Exception 
	 */
	public int pop() throws Exception {
		if (isEmpty()) {
			throw new Exception("stack is empty !");
		}
		int data = this.top.data;
		this.top = this.top.last;
		size--;
		return data;
	}
	
	public Integer getTopData() {
		if (isEmpty()) {
			return null;
		}
		return this.top.data;
	}
	
	/**
	 * 判断是否为空
	 * @return
	 */
	public boolean isEmpty() {
		return (this.top == null || this.top.data == null);
	}
	
	
	public Node getTop() {
		return top;
	}

	public void setTop(Node top) {
		this.top = top;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}
	
}

 

关于图像傅里叶变换得到的频谱图的通俗理解 傅里叶变换过程: 经过傅里叶变化且频谱居中化处理的频谱图: 1.如果将图像某一行上的灰度变化看作是一个离散信号,那么整张图像可以看作是一个分布在二维平面上的信号,因此图像可看作是空间域信号。傅里叶变换则是将图像灰度分布(空间域信号)变换到了频域上,给我们提供了观察图像的另一个视角。 2.图像的频谱图(频谱居中后)的中心点是频率最低点,以该点为圆心,不同半径的上的点表示不同的频率。这里的图像频率是指对应原图像中的某灰度曲线变化的快慢(这么说不严谨,但是按照上面第1点的角度,似乎也可以这么理解 阅读详情

相关推荐

【β-Boltzmann探索策略】

𝜀是一个介于0和1之间的参数,用于控制探索和利用的比例。当𝜀较大时,智能体更倾向于探索;当𝜀较小时,智能体更倾向于利用已知信息。

m0_59385870的博客 1084

【Java数据结构】实现栈和队列

【Java数据结构】实现栈和队列

yanxiang3306 6609

UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式

UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式 这个系列介绍高维统计,一些需要知道的结论可以参考UA MATH 564与566两个系列,分为两大部分,高维的概率论相关结果、高维的统计模型。概率论相关结论分六个部分介绍:概率不等式、高维随机向量、随机矩阵、Concentration without Independence、二次型、随机过程。 ...

一个不愿透露姓名的博客 2732

Java数据结构—栈

数据结构,栈

Green_756的博客 382

二极管限幅电路和钳位电路

二极管限幅电路和钳位电路学习

HW-BASE的博客 927

Unity 之jenkins自动打包

1.Jenkins 是什么? jenkins官方网址:https://www.jenkins.io/zh/ Jenkins是一款开源 CI&CD(持续集成&持续部署) 软件,用于自动化各种任务,包括构建、测试和部署软件。 简易安装:Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 插件扩展:通过更新中心中的

TxNet 2132

Java数据结构:栈

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈在实际开发中有很大的作用,在操作系统、编译器等都有重要的栈结构。栈的特点在于它的先进后出、后进先出存储方式,栈的主要操作有出栈(Pop)、入栈(Push)、取栈顶。 ...

xxJAY的博客 749

下采样新突破!ADown模块让YOLOv11多尺度特征提取更精准

ADown 凭借可编程梯度信息与多分支特征聚合的创新设计,打破了传统下采样在特征保留上的固有局限。本教程从原理到代码实现,再到工业场景适配,完整呈现了其在 YOLOv11 中的集成路径。只需简单新增模块脚本并修改配置文件,你的目标检测模型就能在多尺度特征捕捉能力上实现跨越式提升——无论是学术研究中的小目标检测突破,还是工业场景下的复杂多尺度任务落地,ADown 都能成为你攻克下采样瓶颈的利器。现在就动手尝试,让你的检测模型在下一代下采样技术的创新中再上一个台阶吧。

know_F0727的博客 524

java 数据结构 栈的实现

java数据结构之栈的实现,可是入栈,出栈操作; /** * java数据结构之栈的实现 * 2016/4/26 **/ package cn.Link; public class Stack{ Node tail = new Node(); Node nowNode = new Node(); //永远指向栈顶 int si...

163

流体仿真软件:COMSOL Multiphysics二次开发_(11).COMSOL与外部软件的数据交换

通过上述方法,您可以实现 COMSOL Multiphysics 与外部软件的数据交换,从而更好地集成和分析仿真结果。无论是从文本文件导入数据,导出数据到 MATLAB,还是通过 API 和 COMSOL Server 实现实时通信,都能满足不同场景下的需求。希望这些内容对您在流体仿真领域的开发工作有所帮助。

kkchenjj的博客 1552

SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)

本文主要讲述的是三个大的知识点,超详细,涉及到知识点比较多,并且串起来讲解,这也是我在网上搜不到相关资料才自己慢慢研究测试出来的,断断续续耗费了我一周多时间,相信只要你们认真看完,肯定会有所收获; 1、CK11N/CK40N成本发布功能中,系统前台的取数逻辑,涉及到多个采购信息记录、生产版本、货源清单、配额协议等对成本价发布的影响~~!! 2、CK11N与CK40N发布的成本价不一致的问题~~!! 3、如何处理外协加工物料的外协价与BOM组件成本取值不匹配的问题~~!!

风沙的博客 4073

java数据结构之栈

栈作为一种重要的数据结构,以其简单而有效的后进先出原则,在 Java 编程以及计算机科学的各个领域都有着广泛的应用,通过理解栈的基本概念、操作方法、Java 中的实现方式以及应用场景,我们能够更好地利用栈来解决各种实际问题,提高程序的性能和可读性。

2301_81490350的博客 656

OpenCASCADE完整教程专栏完整目录

OpenCASCADE完整教程专栏完整目录

希望我的博客,能帮上你解决学习中工作中所遇到的问题 9695

Java数据结构 - 栈

韩顺平2019-Java数据结构 学习韩顺平老师的Java数据结构 栈特点 1.先入后出 2.变化的一端叫栈顶(TOP)固定的一端叫栈底(Bottom) 3.出栈(pop)和入栈(push) 数组模拟栈 思路: 1使用数组模拟 2.使用top表示栈顶 ,初始化-1 3.入栈 top++ stack(top) = data; 4.出栈 int value = stack[top]; top–; re...

热心市民小王的博客 177

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Java基础】Java内置数据结构——栈

简述 堆栈在Java中的实现与简单应用。 栈(stack)又名堆栈,它是一种运算受限的线性表,具有先进后出(FILO)的特点~

一步一个脚印 4457

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java模拟栈数据结构

题目要求 首先我们写出栈的数据结构代码 package com.liyiyuan.javase.test01; public class Arraytest { private Object[] array; private int index = 0;//指向栈的顶部 //构造方法 public Arraytest(){ this.array = new Object[10];//没有给定栈的大小,默认赋值10 } public Arr

JavaNewbie12138的博客 347

【Java数据结构】栈与队列详解

Java数据结构---栈与队列详解

耀的博客 3014

【数据结构】使用 Java 实现栈

栈示意图 先进后出 使用 Java 实现栈 public class MyStack { // 用一个数组作为栈的底层 private int[] elements; /** * 构造一个空的栈 */ public MyStack() { elements = new int[0]; } /** * 压栈 * * @param e */ public void pu

Yuu 678

java数据结构与算法:栈

根据栈后进先出的特性,我们实现了单词逆序以及分隔符匹配。所以其实栈是一个概念上的工具,具体能实现什么功能可以由我们去想象。栈通过提供限制性的访问方法push()和pop(),使得程序不容易出错。对于栈的实现,我们稍微分析就知道,数据入栈和出栈的时间复杂度都为O(1),也就是说栈操作所耗的时间不依赖栈中数据项的个数,因此操作时间很短。而且需要注意的是栈不需要比较和移动操作,我们不要画蛇添足。

weixin_74149684的博客 1016

java 实现栈数据结构

        栈数据结构java实现  import java.util.*;class MyStack ...{        int keyWord;    MyStack next;            public MyStack(int keyWord,MyStack next)...{        this.keyWord = keyWord;        this

liukaiwei0805的专栏 694

数据结构(JAVA)栈

栈是一种特殊的线性表,只允许他的操作顺序是先进后出栈顶:进行插入和删除元素操作的一端。栈顶:不进行任何操作。压栈:栈的插入操作。出栈:栈的删除操作。

2301_81225368的博客 1369

Java数据结构-栈

感觉绕来绕去,还是绕不过数据结构这座大山啊。。。。 开始再学习一次数据结构,使用JAVA来学一遍 栈 栈的基本结构就是后进先出 使用java数组实现的 package com.stu; public class myStack { int [] elements; public myStack(){ elements = new int[0]; } ...

BLOG OF PETERMAOSX. 178

Java数据结构之栈

栈的底层代码和自己实现的栈

m0_46648369的博客 740

java 栈_数据结构|用java自己手写实现一个栈

javaDEMO本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https://www.javastudy.cloud用java实现一个栈栈主要有以下特性和操作:1.先进后出2.有入栈和出栈的操作因为我们demo中也只先完成这两个简单的特性和操作代码如下:/** *...

weixin_39711721的博客 243

数据结构——java实现栈

栈 定义: 栈是一种先进后出的数据结构,我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何元素的栈称为空栈 栈的java代码实现: 基于数组: 1 import org.junit.jupiter.api.Test; 2 3 /** 4 * 用数组实现栈 5 * @author wydream 6 * 7 */ 8 ...

weixin_30412167的博客 135

用java写栈的数据结构

package day4; public class Stack { //java中栈的数据结构 int[] array; int top; Stack(){ this.array = new int[100]; this.top = top; } public void push(int v){ //进栈过程 this.array[this.top++] = v; } publ

LiangGaGa的博客 213

java数据结构----栈

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。栈可以分为:数据结构栈,java虚拟机栈,栈帧Java虚拟机栈JVM stack(Java虚拟机栈)只是JVM中的一块内存,该内存一般用于存放。例如:局部变量......

mr_yuanshen的博客 615
上一篇: 单链表的基本操作二——排序 (java)
下一篇: 数据结构之队列(java)
^^_candice
博客等级 码龄10年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值