线性表--05---栈
栈生活中的栈----客栈存储货物或供旅客住宿的地方,可引申为仓库、中转站 。例如我们现在生活中的酒店在古时候叫客栈是供旅客休息的地方旅客可以进客栈休息休息完毕后就离开客栈。计算机中的栈:我们把生活中的栈的概念引入到计算机中就是供数据休息的地方它是一种数据结构数据既可以进入到栈中又可以从栈中出去。栈是一种基于先进后出(FILO)的数据结构是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据先进入的数据被压入栈底最后的数据在栈顶需要读数据的时候从栈顶开始弹出数据最后一个数据被第一个读出来。栈是一种基于先进后出(FILO)的数据结构first in last out我们称数据进入到栈的动作为压栈数据从栈中出去的动作为弹栈。栈代码实现数组实现链表实现数组实现:对于数组来说我们模拟栈的过程很简单因为栈是后进先出我们很容易在数组的末尾进行插入和删除。所以我们选定末尾为栈顶。所以对于一个栈所需要的基础元素是 一个data数组和一个top(int)做指针表示栈顶位置。push入栈如果top数组长度-1。入栈。top;a[top]value;如果top数组长度-1栈满。pop出栈并返回首位如果top0,栈不为空可以弹出。return data[top–];如下图本来栈为1234栈顶执行pop操作。top变为3的位置并且返回4代码实现:选定数组末尾为栈顶,设计top指针 指向栈顶元素publicclassStack01TimplementsIterableT{//数组privateTdata[];//top指针 指向栈顶元素privateinttop;publicStack01(){data(T[])newObject[10];top-1;}publicStack01(intmaxsize){data(T[])newObject[maxsize];top-1;}booleanisEmpty(){returntop-1;}intsize(){returntop1;}//入栈booleanpush(Tvalue)throwsException{if(top1data.length-1){thrownewException(栈已满);}else{data[top]value;returntrue;}}//返回栈顶元素不移除Tpeek()throwsException{if(!isEmpty()){returndata[top];}else{thrownewException(栈为空);}}//出栈Tpop()throwsException{if(isEmpty()){thrownewException(栈为空);}else{returndata[top--];}}OverridepublicIteratorTiterator(){returnnewStack01.SIterator();}privateclassSIteratorimplementsIterator{privateintcusor;publicSIterator(){this.cusortop;}OverridepublicbooleanhasNext(){returncusor0;}OverridepublicObjectnext(){if(top-1){returnnull;}returndata[cusor--];}}}测试publicclassStackTest01{publicstaticvoidmain(String[]args)throwsException{//创建栈对象Stack01StringstacknewStack01(12);//测试压栈stack.push(a);stack.push(b);stack.push(c);stack.push(d);for(Stringitem:stack){System.out.println(item);}System.out.println(------------------------------);//测试弹栈Stringresultstack.pop();System.out.println(弹出的元素是result);System.out.println(剩余的元素个数stack.size());}}链表实现:栈API设计push入栈单向链表头插法pop出栈代码实现:importjava.util.Iterator;publicclassStackTimplementsIterableT{//记录首结点privateNodehead;//栈中元素的个数privateintN;//单向链表 节点NodeprivateclassNode{publicTitem;publicNodenext;publicNode(Titem,Nodenext){this.itemitem;this.nextnext;}}publicStack(){this.headnewNode(null,null);this.N0;}//判断当前栈中元素个数是否为0publicbooleanisEmpty(){returnN0;}//获取栈中元素的个数publicintsize(){returnN;}//把t元素压入栈publicvoidpush(Tt){//找到首结点指向的第一个结点NodeoldFirsthead.next;//创建新结点NodenewNodenewNode(t,null);//让首结点指向新结点head.nextnewNode;//让新结点指向原来的第一个结点newNode.nextoldFirst;//元素个数1N;}//弹出栈顶元素publicTpop(){//找到首结点指向的第一个结点NodeoldFirsthead.next;if(oldFirstnull){returnnull;}//让首结点指向原来第一个结点的下一个结点head.nextoldFirst.next;//元素个数-1N--;returnoldFirst.item;}OverridepublicIteratorTiterator(){returnnewSIterator();}privateclassSIteratorimplementsIterator{privateNoden;publicSIterator(){this.nhead;}OverridepublicbooleanhasNext(){returnn.next!null;}OverridepublicObjectnext(){nn.next;returnn.item;}}}测试:publicclassStackTest{publicstaticvoidmain(String[]args){//创建栈对象StackStringstacknewStack();//测试压栈stack.push(a);stack.push(b);stack.push(c);stack.push(d);for(Stringitem:stack){System.out.println(item);}System.out.println(------------------------------);//测试弹栈Stringresultstack.pop();System.out.println(弹出的元素是result);System.out.println(剩余的元素个数stack.size());}}java自带的 StackStackpackage java.util;Vectorjava.util.Stack 是由数组实现

相关新闻

OSGB模型轻量化实战:主流工具对比与性能优化指南

OSGB模型轻量化实战:主流工具对比与性能优化指南

1. 项目概述:当三维模型遇上“减肥”需求在三维可视化、数字孪生和智慧城市这些领域混迹多年,我处理过海量的三维模型数据。一个越来越普遍的痛点就是:模型文件太大了。动辄几十个G甚至上T的倾斜摄影模型、BIM模型,在数据加载、网…

2026/8/24 7:59:50 阅读更多 →
智能在线笔试系统架构设计与防作弊技术解析

智能在线笔试系统架构设计与防作弊技术解析

1. 项目背景与核心价值 去年帮某跨国科技公司优化校招流程时,他们的HR总监向我吐槽:光是组织一场3000人的笔试,就要协调10个城市的考场,打印的试卷能铺满半个足球场。这让我意识到,传统招聘考试模式已经严重拖累企业人…

2026/8/24 7:59:50 阅读更多 →
Qt QStackedWidget:多页面界面管理核心机制与工程实践

Qt QStackedWidget:多页面界面管理核心机制与工程实践

1. 为什么需要堆栈窗口?从界面卡顿说起如果你做过稍微复杂一点的桌面应用,尤其是那种带多个功能模块、需要频繁切换界面的工具,大概率遇到过这样的问题:点击一个按钮,整个窗口内容“唰”一下全部清空,然后新…

2026/8/24 7:59:50 阅读更多 →

最新新闻

HID设备遥测最小化工具:从输入校验到离线报告的完整实现

HID设备遥测最小化工具:从输入校验到离线报告的完整实现

项目编号:20260824-010。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 列出设备管理所需字段、可选遥测、网络目标和本地替代记录。在真实工程里,这类工作最容易出现…

2026/8/24 12:29:25 阅读更多 →
VLA模型部署:从Demo玩家到AI工程师的进阶指南

VLA模型部署:从Demo玩家到AI工程师的进阶指南

最近在技术社区和求职群里,一个话题被反复提起: “我跟着教程在真机上部署了一个VLA(Vision-Language-Action)模型的演示Demo,这个经历能帮我找到一份AI相关的实习吗?” 这是一个非常现实且尖锐的问题。…

2026/8/24 12:29:25 阅读更多 →
[C++]Qt表格打印:从 qDebug 格式化输出到控制台表格的技巧

[C++]Qt表格打印:从 qDebug 格式化输出到控制台表格的技巧

在 Qt 中使用 qDebug() 实现表格化输出,核心是通过格式化字符串对齐列数据,以下是直接可用的实现方案,包含基础固定列宽、自适应列宽两种实用模板。1. 基础固定列宽表格(直接复制使用)适用于字段长度固定的场景&…

2026/8/24 12:29:25 阅读更多 →
从零构建2D解谜游戏Demo:以《深夜小吃店》为例的设计与实现

从零构建2D解谜游戏Demo:以《深夜小吃店》为例的设计与实现

凌晨三点,你盯着屏幕,又一次卡在了那个看似简单的谜题上。一个2D解谜游戏的Demo,美术风格温馨,音乐舒缓,但你就是找不到那把该死的钥匙。你开始怀疑,是不是自己漏掉了某个像素点,或者某个看似无…

2026/8/24 12:29:25 阅读更多 →
HID按键映射配置可移植工具:从输入校验到离线报告的完整实现

HID按键映射配置可移植工具:从输入校验到离线报告的完整实现

项目编号:20260824-009。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 核对设备标识、按键码、层、宏和固件差异,评估配置迁移结果。在真实工程里,这类工…

2026/8/24 12:29:25 阅读更多 →
抖音AI无人直播小游戏:从技术架构到工程实现全解析

抖音AI无人直播小游戏:从技术架构到工程实现全解析

这次我们来看一个实战项目:抖音AI无人直播小游戏。这个项目不是单纯的概念,而是一个从零到一的技术实现方案,核心是利用AI技术实现直播间的自动化内容生成与交互,从而模拟一个“无人”但持续有内容输出的直播状态。对于开发者、内…

2026/8/24 12:28:25 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →