JAVA实现栈

java单链表实现栈 栈的实现方式二:使用单链表来实现栈package stack; /** * * <p> * 功能描述:java栈的链表实现方式 * 编程思想:链表栈中包括结点类和栈顶结点,初始化时将栈顶结点指向null * 1、添加结点时将新加入的结点指向原本的栈顶结点,将新的栈顶结点指向新插入的节点 * 2、出栈时栈顶出栈并将新栈顶结点指向原栈顶结点 * </p> * ... 阅读详情


package datastruct;
import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * 用单链表实现栈,头插法
 * @author Wee bing
 * @param <Item>
 */
public class MyStack<Item> implements Iterable<Item> {
	private Node<Item> head;//头节点
	private int n;//元素个数

	@SuppressWarnings("hiding")
	private class Node<Item> {
		private Item item;
		private Node<Item> next;
		
		private Node(Item item) {
			this.item = item;
		}
	}
	
	public MyStack() {
		head = null;
	}
	
	//栈中元素的个数
	public int size() {
		return n;
	}
	
	//栈是否为空
	public boolean isEmpty() {
		return n == 0;
	}
	
	//入栈
	public void push(Item item) {
		if (item == null) throw new NullPointerException();
		Node<Item> oldHead = head;
		head = new Node<Item>(item);
		head.next = oldHead;
		n++;
	}
	
	//偷瞄栈顶元素
	public Item peek() {
		if (isEmpty()) throw new NoSuchElementException();
		return head.item;
	}
	
	//出栈
	public Item pop() {
		if (isEmpty())	throw new NullPointerException();
		Item item = head.item;
		head = head.next;
		n--;
		return item;
	}
	
	//元素迭代
	@Override
	public Iterator<Item> iterator() {
		// TODO Auto-generated method stub
		return new MyIterator<Item>(head);
	}
	
	@SuppressWarnings("hiding")
	private class MyIterator<Item> implements Iterator<Item> {
		private Node<Item> cur;
		
		private MyIterator(Node<Item> head) {
			this.cur = head;
		}
		
		@Override
		public boolean hasNext() {
			// TODO Auto-generated method stub
			return cur != null;
		}
		
		public Item next() {
			Item item = cur.item;
			cur = cur.next;
			return item;
		}
	}
	
	//测试
	public static void main(String[] args) {
		MyStack<Integer> ms = new MyStack<Integer>();
		ms.push(8);
		ms.push(5);
		ms.push(11);
		ms.push(100);
		ms.push(50);
		ms.push(70);
		ms.push(77);
		ms.push(200);
		System.out.println(ms.size());
		System.out.println(ms.pop());
		System.out.println(ms.size());
		System.out.println(ms.pop());
		System.out.println(ms.size());
		System.out.println("--------------------------");
		Iterator<Integer> arr = ms.iterator();
		while (arr.hasNext()) {
			System.out.println(arr.next());
		}
		System.out.println(ms.size());
		System.out.println(ms.peek());
	}
}




机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码) 本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。 阅读详情

相关推荐

Keil MDK编译错误#541解决方案与ARM_Compiler包解析

在嵌入式开发中,编译器工具链的依赖管理是确保项目顺利构建的关键环节。以Keil MDK为例,其软件包依赖机制通过组件化设计实现功能解耦,其中ARM_Compiler包专门处理系统IO重定向等编译器扩展功能。这种架构既提升了模块复用性,也带来了版本兼容性挑战。当出现'Error #541: component missing'报错时,通常是由于中间件组件(如文件系统)在新版本中显式依赖了ARM_Compiler包。开发者需要通过Pack Installer安装该包,并在Run-Time Environment

weixin_32129187的博客 367

顺序栈———Java实现

概念 栈是一种只允许在一端进行插入或删除的线性表(逻辑结构属于操作受限的线性表)。 栈的操作端通常被称为栈顶,另一端被称为栈底。 栈的插入操作称为进栈(压栈|push);栈删除操作称为出栈(弹栈|pop)。 特点 栈中的元素是“先进后出”的特点,只允许在栈顶操作。 存储结构 顺序存储的栈称为顺序栈;链式存储的栈称为链式栈。 Java实现 围绕栈的4个元素来实现栈 ...

wilson_m的博客 4366

VMware 17+Win10 22H2全栈配置指南|UEFI优化+GPU直通实战

​VMware下载:下载官网版本的Wmare 17 Pro (点击直达链接 )企业用户可选永久许可证,个人学习也可以直接安装使用,Win10镜像:微软官网下载22H2版ISO文件(附官方纯净版渠道 )

waicsdn_haha的博客 4020

栈的java实现

出自:https://www.cnblogs.com/liaohai/p/6486911.html 下面是栈的顺序存储结构和链式存储实现:    1 package stack; 2 3 public interface IStack&lt;E&gt; { 4 //1.判断空栈 5 public boolean isEmpty(); 6 7 ...

kangkang_hacker的博客 716

英飞凌TC397芯片时钟树详解:从EB-tresos配置到PLL锁相环实战避坑

本文详细解析了英飞凌TC397芯片的时钟树架构,从EB-tresos配置到PLL锁相环的实战应用,帮助工程师避免常见配置陷阱。文章深入探讨了时钟源层、频率转换层和分配网络层的设计原理,提供了PLL配置的数学公式和EB-tresos关键容器的配置要点,并分享了调试技巧与性能优化实践,适用于MCU开发中的时钟管理需求。

weixin_42524226的博客 212

告别卡顿!用AVPro Video在Unity 2022.3里流畅播放4K视频的保姆级配置流程

本文详细介绍了如何在Unity 2022.3中使用AVPro Video插件实现4K视频的流畅播放。从环境配置、插件选型到核心性能优化技巧,包括解码器设置、内存管理策略和多平台适配方案,帮助开发者彻底解决卡顿问题,提升视频播放体验。

weixin_32349561的博客 318

栈的Java实现--链栈

栈的Java实现--链栈 链栈,顾名思义,就是以链表的形式实现的栈的相关操作,其实是功能弱化了的链表,如果已经阅读过链表的实现代码,那么链栈的实现显得更为容易。   链栈的基本结构: 链栈的入栈操作:  让top引用指向新的节点,新节点的next指向原来的top 记录栈内元素个数的size+1 链栈的出栈操作:  top引用指向原栈顶元素的下一个元素(top.next)...

生命在于折腾 710

Arco Design Pro PC端商家后台框架 | Axure高保真原型库

摘要:本Axure原型设计方案基于字节跳动ArcoDesignPro规范,提供企业级后台快速搭建方案。包含动态表格、表单验证等核心组件,采用中继器驱动设计,支持响应式布局。方案覆盖80%后台常用交互,可节省60%原型制作时间,配套完整设计文档和组件库,实现原型到开发的高效衔接。特别适用于电商、SaaS等后台系统开发,支持权限管理、数据分析等场景,显著提升团队协作效率。

招风的黑耳优快云 3973

Java栈实现

数组实现的栈一:优点:插入和删除很快,缺点:长度有限 public class Stack { private int top = -1; private Object[] objs; public Stack() throws Exception{ this(10); } public Stack(int capacity) throws Exceptio

怀揣梦想,努力前行 2万+

27、目标识别的最新进展

本文综述了目标识别(OID)领域的最新进展,重点介绍了质量评估、预处理和搜索空间缩减等关键技术。文章分析了多种质量指标,如缩减率、对完整性、召回率和精确率等,并探讨了它们的适用场景。同时,详细介绍了预处理中自动学习转换规则的方法,以及传统阻塞、排序邻域索引等搜索空间缩减技术。此外,文章还讨论了动态选择缩减技术的方法,并展望了未来研究方向,如更智能的预处理、自适应的缩减技术和与人工智能的结合。希望这些技术和方法能够为目标识别领域的研究和实践提供参考和帮助。

q5r6s7的博客 92

8、对比 LightGBM、XGBoost 和深度学习

本文对比了LightGBM、XGBoost和深度学习模型(特别是TabTransformer)在处理表格数据时的性能差异。从模型复杂度、数据准备、训练时间、准确性和适用场景等方面进行分析,重点探讨了三者在人口普查收入预测任务中的表现。文章详细介绍了XGBoost与LightGBM的核心特性与区别,深入讲解了TabTransformer的架构与实现,并涵盖了分类特征编码、缺失值处理和类别不平衡等关键数据预处理技术,为选择合适的表格数据建模方法提供了实践指导。

julia4scientist的博客 120

java实现栈_Java实现一个栈就这么简单

栈定义栈是一种基于后进先出(LIFO)策略的集合类型。本章讨论如何使用Java语言实现一个基本的栈。一个栈容器要求提供入栈操作,出栈操作,获取栈大小和判断栈是否为空操作。抽象数据类型可定义为:publicinterfaceStack{/**判断栈是否为空。*/publicbooleanisEmpty();/**获取栈大小。*/publicintsize();...

weixin_34816303的博客 497

YOLOv8首发优化:遥感目标检测 | 专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块,解决低空间分辨率、传感器噪声、目标模糊、低光照退化和部分遮挡等限制

一种轻量级网络,其创新性地整合了专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 492

java栈的实现

一.数组实现的栈,能存储任意类型的数据。 /** * java 使用数组来实现栈,能存储任意数据 * * @author Linging * @date 2019/2/10 * */ import java.lang.reflect.Array; public class ArrayStack&amp;lt;T&amp;gt; { private final static int DEFA...

Linging_24的博客 2508

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java栈的实现_Java栈实现

1. 定义栈所有方法接口:package com.dataStructure.stack;/*** 类功能描述:** @version 1.0.0* @auther Create by Barry* @date Create on 2018/3/12.* @history*/public interface Stack {public boolean push(Object element);pu...

weixin_34319902的博客 142

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

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

Java实现栈

Java基于数组实现栈: /** * Java基于数组实现栈 */ public class MyStack<T> { //定义一个数组 private Object[] stack; //模拟栈针 private int needle; //初始化栈 MyStack(){ stack = new Object[10];//初始化容量是10 } //取栈顶元素 public T peek(){

小小周的博客 163

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

两个栈实现队列+两个队列实现栈----java

两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后全部出stack1并进入stack2.实现队列的先进先出即:若stack2非空,我们需要的恰好再栈顶,出栈;若要给队列添加元素,即先进sack1,要出队时,若stack2不为空就出栈,为空时就把stack1全部进栈到stack2 二.两个队列实现一个栈 ps:图

毛毛虫的小哈 1万+

用栈实现队列 && 队列实现栈(Java)

思路:最新来的一定要在出栈口(一个个叠加),用que2作为存放新来的队列。解释:每次push新元素时,都将其放入一个空队列,然后将另一个队列的所有元素转移到这个队列中,最后交换两个队列的引用。基本思路:使用两个栈(输入栈和输出栈共同完成一个队列),保证把进栈数据全部导入到输出栈(注意是全部导入)。写博客的目的是每日督促并记录刷题,也欢迎大家批评指正~(day12)注意:在push方法里就要随时进行这种变化。注意:将相近功能的代码抽象出来。

m0_72833525的博客 782

Java栈和队列的实现

Java栈和队列的实现

2301_80288511的博客 896

Java实现链栈

一、分析   栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表。   链栈是指采用链式存储结构实现的栈,通常用单链表来表示,在单链表表头进行栈的操作。   一个标准的链栈具有如下的基本操作:     1、初始化链栈     2、销毁链栈     3、清空链栈     4、检测链...

weixin_30858241的博客 404

Java实现栈与队列

本文详细介绍了Java中栈和队列这两种数据结构的实现原理与应用场景。文章首先讲解了栈的后进先出(LIFO)特性,通过数组和链表两种方式实现栈结构,并分析了栈在递归转循环、括号匹配、逆波兰表达式等场景的应用。随后介绍了队列的先进先出(FIFO)特性及其实现方式,重点讨论了循环队列和双端队列这两种特殊队列的实现原理。最后通过LeetCode题目示例,展示了如何用队列实现栈和用栈实现队列的相互转换方法,提供了完整的代码实现。全文通过理论讲解与代码实践相结合的方式,帮助读者深入理解这两种基础数据结构的特点与应用。

su17643217590的博客 6737

链栈的java实现

这篇文章讲述的是链栈的java实现,如有错误或者不当之处,还望各位大神批评指正。 栈的特点 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相...

叶清逸的博客 2659

Java数据结构-栈的实现

一步到位,把栈实现了

算法萌新一枚 1823

栈的java实现_栈 的java实现

栈的java实现,链栈的实现,其节点的声明方式,与结构体不大相同,只一点需要注意,还有泛型的擦除。使用泛型时,对泛型是不分配内存空间的 ,只是栈中引用指向他,使用new 分配空间的都会在堆中。/***数组栈的java实现*/class ArrayStack{private static final int DEFAULT_CAPACITY=10;AnyType []array;int size;i...

weixin_33121737的博客 95
上一篇: Java通过JDBC连接数据库
下一篇: Java实现栈2
爱做梦真是太好了
博客等级 码龄10年 74粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值