Java寫數據結構:棧

1.概念:

一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的數據元素遵守后進先出LIFO(Last In First Out)的原則。

?壓棧:棧的插入操作叫做進棧/壓棧/入棧,入數據在棧頂。

出棧:棧的刪除操作叫做出棧。出數據在棧頂。

2.棧的方法:

?接下來就來一一模擬實現上述棧的方法↓

先把最基本的成員變量和構造方法完成

public class MyStack {public int[] elem;public int usedsize;public MyStack() {this.elem = new int[10];}
}

?實現push方法

 public void push(int val){if(isFull()){this.elem = Arrays.copyOf(elem , elem.length * 2);}elem[usedsize++] = val;}private boolean isFull(){return usedsize == elem.length;}

實現pop方法

先自定義創建一個空棧異常類

public class EmptyStackException extends RuntimeException {public EmptyStackException() {}public EmptyStackException(String message) {super(message);}
}

pop方法?

 public int pop(){if(isEmpty()){throw new EmptyStackException();}int val = elem[usedsize - 1];usedsize--;return val;}
private boolean isEmpty(){return usedsize == 0;}

實現peek方法?

 public int peek(){if(isEmpty()){throw new EmptyStackException();}return elem[usedsize - 1];}private boolean isEmpty(){return usedsize == 0;}

測試:

public class Test {//測試MyStackpublic static void main1(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);myStack.push(5);System.out.println(myStack.peek());System.out.println(myStack.pop());System.out.println(myStack.peek());}
}

結果:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77841.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77841.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77841.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單頁面應用的特點,什么是路由,VueRouter的下載,安裝和使用,路由的封裝抽離,聲明式導航的介紹和使用

文章目錄 一.什么是單頁面應用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重點)0.引出1.介紹2.下載與使用(5個基本步驟2個核心步驟)2.1 五個基本步驟2.2 兩個核心步驟 四.路由的封裝抽離五.聲明式導航1.導航鏈接特點一:能跳轉特點二:能高亮 2.兩個高亮類名2.1.區…

【C++】模板2.0

最近學習了一些模板的知識,速寫本博客作為學習筆記,若有興趣,歡迎垂閱讀! 1.非類型模板參數 模板參數分類類型形參與非類型形參。 類型形參即:出現在模板參數列表中,跟在class或者typename之類的參數類型名…

目標檢測中的損失函數(二) | BIoU RIoU α-IoU

BIoU來自發表在2018年CVPR上的文章:《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 論文針對現有目標檢測方法只關注“足夠好”的定位,而非“最優”的框,提出了一種考慮定位質量的NMS策略和BIoU loss。 這里不贅…

如何在 Amazon EC2 上部署 Java(Spring Boot 版)

讓我們學習如何將 Java Spring Boot Web 服務器部署到 Amazon EC2。每月只需 3 美元。 使用 Azure,您可能不知道要花費多少錢。 Spring Boot 項目示例 在本教程中,我們將重點介紹如何將 Java Spring Boot 服務器部署到 Amazon EC2,因此我們不…

Git常用命令分類匯總

Git常用命令分類匯總 一、基礎操作 初始化倉庫git init添加文件到暫存區git add file_name # 添加單個文件 git add . # 添加所有修改提交更改git commit -m "提交描述"查看倉庫狀態git status二、分支管理 創建/切換分支git branch branch_name …

mysql——基礎知識

關鍵字大小寫不敏感 查看表結構中的 desc describe 描述 降序中的 desc descend 1. 數據庫的操作 1. 創建數據庫 create database 數據庫名;為防止創建的數據庫重復 CREATE DATABASE IF NOT EXISTS 數據庫名;手動設置數據庫采用的字符集 character set 字符集名;chars…

Redis 哨兵與集群腦裂問題詳解及解決方案

Redis 哨兵與集群腦裂問題詳解及解決方案 本文將深入探討Redis在哨兵模式和集群模式下可能出現的腦裂問題,包括其發生場景、原因以及有效的解決策略。同時,我們還將提供相應的代碼示例和配置方案來幫助讀者理解和實施。 一、腦裂問題概述 腦裂&#x…

國內網絡設備廠商名單(List of Domestic Network Equipment Manufacturers)

國內網絡設備廠商名單 運維工程師必須廣泛熟悉國內外各大廠商的設備,深入掌握其應用場景、功能特點及優勢。這不僅有助于在故障排查時迅速定位問題,還能在系統設計、優化與升級中做出更合理的決策。對設備特性的精準把握,能夠顯著提升運維效…

2、SpringAI接入ChatGPT與微服務整合

2、SpringAI接入ChatGPT與微服務整合 小薛博客AI 大模型資料 1、SpringAI簡介 https://spring.io/projects/spring-ai Spring AI是一個人工智能工程的應用框架。其目標是將Spring生態系統的設計原則(如可移植性和模塊化設計)應用于人工智能領域&#…

基于ubuntu24.10安裝NACOS2.5.1的簡介

基于ubuntu24.10安裝NACOS2.5.1的簡介 官方網站地址: https://nacos.io 可訪問nacos站點 https://nacos.io/zh-cn/ 2025年04月記錄發布 V2.5.1 版本 一、環境預準備 64 bit JDK 1.8; sudo apt update sudo apt install openjdk-8-jdk sudo apt upda…

神經網絡:從基礎到應用,開啟智能時代的大門

在當今數字化時代,神經網絡已經成為人工智能領域最熱門的技術之一。從語音識別到圖像分類,從自然語言處理到自動駕駛,神經網絡的應用無處不在。它不僅改變了我們的生活方式,還為各個行業帶來了前所未有的變革。本文將帶你深入了解…

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南(生產級優化)

[k8s實戰]Containerd 1.7.2 離線安裝與配置全指南(生產級優化) 摘要:本文詳細講解在無外網環境下部署 Containerd 1.7.2 容器運行時的完整流程,涵蓋二進制包安裝、私有鏡像倉庫配置、Systemd服務集成等關鍵步驟,并提供…

【CPU】結合RISC-V CPU架構回答中斷系統的7個問題(個人草稿)

結合RISC-V CPU架構對中斷系統七個關鍵問題的詳細解析,按照由淺入深的結構進行說明: 一、中斷請求機制(問題①) 硬件基礎: RISC-V通過CLINT(Core Local Interrupter)和PLIC(Platfor…

[密碼學實戰]國密算法面試題解析及應用

以下是密碼學領域常見的面試題及其詳細解析,涵蓋基礎理論、算法實現與應用場景,幫助系統化備戰技術面試 一、基礎概念類 1. 密碼學的主要目標是什么? 答案: 確保數據的機密性(加密防止竊聽)、完整性(哈希校驗防篡改)、認證性(數字簽名驗證身份)和不可否認性(簽名防…

Spring Boot 實現 Excel 導出功能(支持前端下載 + 文件流)

🧠 一、為什么用 EasyExcel? 在 Java 開發中,操作 Excel 的框架主要有: Apache POI(經典但慢、內存占用大) JXL(老舊不維護) Alibaba EasyExcel(阿里出品,…

【論文速遞】2025年06周 (Robotics/Embodied AI/LLM)

目錄 SMOLLM2:當Smol變得大 - 以數據為中心的小語言模型英文摘要中文摘要 OmniHuman-1:重新考慮一階段的人類動畫模型的擴展英文摘要中文摘要 S1:簡單的測試時間縮放英文摘要中文摘要 直接對齊算法間的差異日漸模糊英文摘要中文摘要 VideoJAM…

學習深度學習是否要先學習機器學習?工程師的路徑選擇策略

深度學習與機器學習的關系,如同摩天大樓與地基——前者是后者的高階延伸,但能否繞過地基直接造樓?本文從技術本質、學習曲線、應用場景三個維度剖析這一關鍵問題。 一、技術血脈的承繼關系 概念體系同源: 損失函數、梯度下降、過擬…

開始放飛之先搞個VSCode

文章目錄 開始放飛之先搞個VSCode重要提醒安裝VSCode下載MinGW-w64回到VSCode中去VSCode原生調試鍵盤問題遺留問題參考文獻 開始放飛之先搞個VSCode 突然發現自己的新臺式機上面連個像樣的編程環境都沒有,全是游戲了!!!&#xff…

【2025“華中杯”大學生數學建模挑戰賽】選題分析 A題 詳細解題思路

目錄 2025“華中杯”大學生數學建模挑戰賽選題分析A題:晶硅片產銷策略優化B題:校園共享單車的調度與維護問題C題:就業狀態分析與預測D題:患者院內轉運不良事件的分析與預測 A 題 晶硅片產銷策略優化問題 1:月利潤計算模…

YOLO11改進,尺度動態損失函數Scale-based Dynamic Loss,減少標簽不準確對損失函數穩定性的影響

在目標檢測領域,標簽噪聲與尺度敏感問題始終是制約模型性能提升的"阿喀琉斯之踵"。2025年CVPR最佳論文提出的尺度動態損失函數(Scale-based Dynamic Loss, SDL),通過構建自適應損失調節機制,不僅實現了對YOLOv11檢測精度的指數級提升,更重新定義了損失函數的設…