栈和队列 Stack and Queue

2023-10-27

Stack and Queue

  • Queue: First in First out (FIFO)
  • Stack: Last in First out (LIFO)
    在这里插入图片描述

Linked List Implementation

ListNode

class ListNode <AnyType>{
	public ListNode(AnyType Myelement) {
		this(Myelement, null);
	}
	public ListNode(AnyType Myelement, ListNode<AnyType> n) {
		element =  Myelement;
		next = n;
	}

	public AnyType element;
	public ListNode<AnyType> next;
}

Stack

public class stack<AnyType> 
{
	
	private ListNode<AnyType> top;
	
	public stack(){
		top = null;
	}
	
	public boolean isEmpty(){
		if(top == null)
			return true;
		else 
			return false;
	}
	
	public void push(AnyType value){
		if(top == null){
			top = new ListNode<AnyType>(value);
		}
		else {
			ListNode<AnyType> newNode = new ListNode<AnyType>(value);
			newNode.next = top;
			top = newNode;
		}
	}
	
	public void pop() { 
		if(top == null){
			System.out.println("Empty stack");
		}
		else {
		  top = top.next;
		}
	}
	
	public void peek(){
		if(top == null){
			System.out.println("Empty stack");
		}
		else {
			AnyType TopValue = top.element;
			System.out.println(TopValue);
		}
	}
	
	public void peekAndpop(){  
		if(top == null){
			System.out.println("Empty stack");
		}
		else {
			AnyType TopValue = top.element;
			System.out.println(TopValue);
		    top = top.next;
		}
	}	
} 

Queue


public class queue<AnyType>{
	private ListNode<AnyType> head;
	private ListNode<AnyType> tail;
	
	public queue() {
		head = null;
		tail = null;
	}
	
	public void enqueue(AnyType val) {
		if(head == null) {
			head = new ListNode<AnyType>(val);
			tail = head;
		}
		else {
			tail.next = new ListNode<AnyType>(val);
			tail = tail.next;
		}
	}
	
	public ListNode dequeue() {
		if(head == null) {
			System.out.println("Queue is Empty");
			return null;
		}
		else {
			ListNode<AnyType> temp = head;
			head = head.next;
			temp.next = null;
		    return temp;
		}
	}
	
	public boolean isEmpty(){
		if(head == null)
			return true;
		else 
			return false;
	} 
	
	public void display() {
		ListNode cur = head;
		while(cur != null) {
			System.out.println(cur.element);
			cur = cur.next;
		}
	}
}

Array Implementation

Stack


public class ArrayStack<AnyType> {
	
	private AnyType [] arrayStack;
	private int capacity;
	private int size;
	
	public ArrayStack() {
		size = 0;
		capacity = 4;
		arrayStack = (AnyType[]) new Object[capacity];
	}
	
	public void push(AnyType value) {
		checkCapacity();
		for(int i = size; i >= 1; i--) {
			arrayStack[i] = arrayStack[i-1];
		}
		arrayStack[0] = value;
		size++;
	}
	
	public AnyType pop() {
		if(size == 0) {
			System.out.println("stack is empty");
			return null;
		}
		else {
			AnyType temp = arrayStack[0];
			for(int i = 0; i < size-1; i++) {
				arrayStack[i] = arrayStack[i+1];
			}
			arrayStack[size-1] = null;
			size--;
			return temp;
		}
	}
	
	public AnyType peek() {
		if(size == 0) {
			System.out.println("stack is empty");
			return null;
		}
		else {
			System.out.print(arrayStack[0]);
			return arrayStack[0];
		}
	}
	
	private void checkCapacity() {
		if(size >= capacity) {
			AnyType [] temp = arrayStack;
			arrayStack = (AnyType[]) new Object[capacity*2];
			for(int i = 0; i < capacity; i++) {
				arrayStack[i] = temp[i];
			}
			capacity *= 2;
		}
	}
}

Queue


public class ArrayQueue<AnyType> {
	private AnyType [] arrayQueue;
	private int capacity;
	private int size;
	
	public ArrayQueue() {
		size = 0;
		capacity = 4;
		arrayQueue = (AnyType[]) new Object[capacity];
	}
	
	public void enqueue(AnyType value) {
		checkCapacity();
		arrayQueue[size] = value;
		size++;
	}
	
	public AnyType dequeue() {
		if(size == 0) {
			System.out.println("Queue is empty");
			return null;
		}
		else {
			AnyType temp = arrayQueue[0];
			for(int i = 0; i < size-1; i++) {
				arrayQueue[i] = arrayQueue[i+1];
			}
			arrayQueue[size-1] = null;
			size--;
			return temp;
		}
	}
	
	private void checkCapacity() {
		if(size >= capacity) {
			AnyType [] temp = arrayQueue;
			arrayQueue = (AnyType[]) new Object[capacity*2];
			for(int i = 0; i < capacity; i++) {
				arrayQueue[i] = temp[i];
			}
			capacity *= 2;
		}
	}
	

	public AnyType peek() {
		if(size == 0) {
			System.out.println("stack is empty");
			return null;
		}
		else {
			System.out.print(arrayQueue[0]);
			return arrayQueue[0];
		}
	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

栈和队列 Stack and Queue 的相关文章

  • H5跳转微信小程序-成功案例(VUE)(踩坑无数)

    这里写自定义目录标题 准备工作 根据官方提供的资料需准备以下几点 1 已认证的服务号 2 绑定JS接口安全域名 在微信公众平台设置 3 IP白名单 在微信公众平台设置 4 将小程序和H5公众号进行关联 在微信公众平台设置 5 页面path和
  • paramiko 无法实例化 transport

    背景 Paramiko is a pure Python 1 2 7 3 4 implementation of the SSHv2 protocol 2 providing both client and server functiona
  • python信号处理算法库_语音信号处理之时域分析-音高追踪及其Python实现

    1 概述 在音高及其Python实现一文 中 我们使用了简单的 观察法 来计算音高 这并不太难 但这并不有好而且费时费力 那么我们就想 如何通过分析和计算 使用算法来自动计算音高呢 用算法让计算机自动抓取音高的过程 称为音高追踪 Pitch
  • Flex 布局教程:语法篇

    网页布局 layout 是 CSS 的一个重点应用 布局的传统解决方案 基于盒状模型 依赖 display 属性 position属性 float属性 它对于那些特殊布局非常不方便 比如 垂直居中就不容易实现 2009年 W3C 提出了一种
  • Glog 使用

    原文链接 glog使用
  • Java复习-26-枚举

    枚举 替换多例设计 目的 使用场景 不用也没啥 定义一个描述性别的类 那么该对象只有两个 男 女 或者描述颜色基色的类 可以使用 红色 绿色 蓝色 功能 用于定义有限个数对象的一种结构 多例设计进化版 方法 enum 关键字 提供有enum
  • 从码云上克隆代码到IDEA及项目启动

    码云版本库地址复制 输登录代码库系统 找到 版本库 点击 版本库地址 下拉列表 选中 http zjs 190 100 21 10 1001 r aqjg extern project git 版本库地址复制 如果不是首次clone项目可直
  • 头歌答案Python,001

    金宝 答案在这里 自己抄 1 第一关 计算机 num 1 int input 请输入第一个数 print num 1 num 2 int input 请输入第二个数 print num 2 alg input 请选择要执行的运算符 prin
  • 单测mock和stub

    A variety of different terms are used to refer to these custom objects In an effort to clarify the vocabulary Gerard Mes
  • Design1.CMOS工艺OD门,传输门,三态门原理应用浅析

    纲要 OD门 传输门 三态门 1 OD门 i 概念 在CMOS电路中为了满足输出电平变换 吸收大负载电流以及实现线与连接等需要 需要将输出级电路结构改为漏极开路输出的MOS管 构成漏极开路输出 Open Drain Output 门电路 简
  • Android中的Selector的用法

    Android中的Selector主要是用来改变ListView和Button控件的默认背景 其使用方法可以按一下步骤来设计 以在mylist view xml为例 1 创建mylist view xml文件 首先在res目录下新建draw
  • 栈与队列小总结

    思维导图 一 栈 栈 一种数据结构 具有后进先出的特点 有两种实现方式 第一种实现方式就是用数组结构来实现 第二种方式就是用链表的方式来实现 但是由于使用数组的方式来实现栈会更加的好 所以在这里我们用数组的方式来实现栈 栈的实现 1 栈的结
  • 红蓝对抗--蓝队

    2019年参加护网行动的时候 想着是信安专业 可以去赚点零花钱 蓝队的工作 后面总结了一下护网行动和蓝队的一些工作重心 刚刚换电脑的时候翻出来了这个文章 只是个人拙见 大佬勿喷 文章目录 一 团队组建 二 梳理资产 三 风险梳理 四 减少攻
  • 面试求职经历及遇到的部分问题

    转眼间已经工作一年多了 最近想换个工作环境 就选择了跳槽 跳槽对我们程序猿来说并没什么稀奇 但这是我第一次跳槽 也颇感激动 哈哈 总的来说 这次找工作还是相对去年来说比较容易的 毕竟已经工作一年了嘛 记得去年的时候投20份简历也不一定会有面
  • Lesson 7 Edge I

    一 图像分割与不连续 图像分割 segmentation 的目的是把图像中的像素分组 每组像素和图像中的物体强相关 图像分割需要确定图像中的不连续处 不连续处 discontinuity 包括孤立点 线段和边缘 edge 我们首先介绍edg
  • eclipse的new server里tomcat7.0根本选不上解决方法

    创建Tomcat v7 0 Server 不能进行下一步 解决方法 1 退出 eclipse 2 到 工程目录下 metadata plugins org eclipse core runtime 3 把org eclipse wst se
  • 查看函数和所在的行号

    查看Linux下 a库文件中文件 函数 变量等情况 2013 02 24 16 11 02 转载 在Linux 下经常需要链接一些 a的库文件 那怎么查看这些 a 中包 含哪些文件 函数 变量 1 查看文件 ar t a 2 查看函数 变量

随机推荐

  • 最全的Linux运维bash脚本常见用法总结

    删除重复的数组元素 创建临时关联数组 设置关联数组 值并发生重复赋值时 bash会覆盖该键 这 允许我们有效地删除数组重复 CAVEAT 需要bash4 示例功能 remove array dups Usage remove array d
  • 所有pyCharm2018或phpstorm2018版永久激活,亲测无问题

    注意 实际测试软件版本为phpstorm2018 2 3 破解补丁激活 到http idea lanyus com 这里下载补丁 下载 后并将 JetbrainsCrack release enc jar 放置到 D盘根目录 在 Pycha
  • [STM32F4]【把握住了】STM32F4驱动4路VL53L0测距你把握不住

    最近给朋友调试了STM32F407驱动VL53L0的激光测距 安装在机器人上的 遇到一些问题 这里发帖纪录一下 关于VL53L0的资料和代码在正点原子那里都有 但是正点原子只是驱动了一路VL53L0 很多问题都需要我们自己解决 一路的VL5
  • Pikachu靶场之XSS漏洞详解

    Pikachu靶场之XSS漏洞详解 前言 XSS漏洞简述 第1关 反射型xss get 第2关 反射性xss post 第3关 存储型xss 第4关 DOM型xss 第5关 DOM型xss x 第6关 xss盲打 第7关 xss之过滤 第8
  • ATM 网络安全:解决方案、技术和规格--网络大典

    比起 TCP IP 网络 异步传输模式 ATM 网络通常拥有较少的安全漏洞 因为它通常使用光纤作为媒介 并被当作骨干网络用于专用或半专用网络中 侵入 ATM 网络所需的投入是相当高的 然而在 ATM 网络中仍然存在着许多弱点 如信息嗅探 基
  • RTT-线程管理

    RTT 线程管理 官方API文档 https www rt thread org document api group thread html 概念 线程是竞争系统资源的最小运行单元 每个线程在自己的环境中运行 在任何时刻 只有一个线程得到
  • pip 安装 flask_sqlalchemy 报错

    报错一 Errno 13 Permission denied 报错二 ERROR After October 2020 you may experience errors when installing or updating packag
  • Mac电脑如何删除磁盘及双系统分区?

    对于一些新手来说 在使用Mac电脑时可能会选择对硬盘进行分区或者安装双系统 但是 如果后期不需要这些分区时 如何删除它们呢 首先在应用程序中找到实用工具并打开文件夹 然后选择磁盘工具打开 在左侧选中需要修改的磁盘 接着在右侧上方菜单中点击
  • 【当LINUX系统出现网络问题时该如何排查】

    当LINUX出现网络问题时该如何排查 具体问题具体分析 遵循相应的排查思路 一 网络不通时需要进行的处理 1 检测链路是否连通 2 网卡是否正常启用 3 检测路由与网关的配置 4 DNS工作状况 5 检测是否可以正常路由到远程主机 6 检查
  • selenium无登录状态爬取Boss直聘

    BOSS是我很早就实现数据爬取的网站 那会直接用request即可 最近再次尝试以前的代码发现 它做了一些反爬处理 当你直接访问例如https www zhipin com c101210100 b 西湖区 query 数据分析杭州这样的网
  • C++模板基础(五)

    函数模板 函数模板的 完全 特化 template lt gt void f int template lt gt void f int 并不引入新的 同名 名称 只是为某个模板针对特定模板实参提供优化算法 函数模板的特化本质上是实例化 有
  • SQL Server不允许保存更改的解决方法

    点击上面的 工具 选项 在选项对话框中 点击 设计器 表设计器和数据库设计器 去掉 阻止保存要求重新创建表的更改 前面的勾 然后确定 好啦 再去试试吧 应该可以正常修改表的结构啦 o
  • 【NLP】第 2 章 : Transformers简介

    2017 年 12 月左右 发表了一篇题为 Attention Is All You Need 的开创性论文 这篇论文彻底改变了 NLP 领域在未来时代的面貌 本文描述了转换器和所谓的序列到序列架构 序列到序列 或 Seq2Seq 神经网络
  • Excel2013 利用phonetic函数将多行数据合并到同一单元格中

    场景 有一列邮箱数据 现在需要将他们合并到同一个单元格内 且邮箱之间要用英文的逗号隔开 以前五条邮箱为例 利用phonetic函数实现这种合并 合并结果 其中 E列是添加的辅助列
  • Python 调用Sikuli Jar包

    Python 调用Sikuli Python 目录 Sikuli简介 简要说明 环境设置 第一种 Jpype 第二种 Pyjnius 结论 目录 Sikuli简介 Sikuli是由MIT 麻省理工学院 研究团队发布的一种图形化编程技术 编程
  • 实现SSM简易商城项目的商品查询功能

    实现SSM简易商城项目的商品查询功能 介绍 在SSM Spring SpringMVC MyBatis 框架下 我们可以轻松地实现一个简易商城项目 本博客将重点介绍如何实现商品查询功能 帮助读者了解并掌握该功能的开发过程 步骤 1 创建数据
  • LeetCode-1306. Jump Game III

    Given an array of non negative integers arr you are initially positioned at start index of the array When you are at ind
  • 用Flask和Vue制作一个单页应用(自己学习)

    这里以一个简单的例子 展示如何把前端页面的增删改查请求 传递到后端进行数据的操作 一 https zhuanlan zhihu com p 311323583 二 https zhuanlan zhihu com p 311510196 三
  • 王者荣耀s15服务器维护,王者荣耀s15赛季更新全部内容

    原标题 王者荣耀s15赛季更新全部内容 王者荣耀S14很快就要结束了 体验服的版本更新也已经放出来进行测试了 大家都对新赛季的改动非常期待 究竟会有哪些英雄成为新的版本之子 哪些英雄会沦为下水道呢 以下均为体验服内容 不代表最终版本数据 p
  • 栈和队列 Stack and Queue

    Stack and Queue Stack and Queue Linked List Implementation ListNode Stack Queue Array Implementation Stack Queue Stack a