Java基礎數據結構之棧

一.什么是棧

棧是一種特殊的線性表,它只允許在固定的一端進行元素的添加與使用,且遵循先進后出的原則。添加取用元素的一端稱為棧頂,另一端稱為棧底。出棧和入棧都是操作棧頂元素

二.棧的模擬實現

棧的底層是一個數組

這是里面的成員變量以及構造方法

壓棧(入棧)

首先要檢測棧是否滿,如果滿,就要進行2倍擴容。注意,此擴容會產生新的對象!!!而不是在原數組上擴容。

出棧

遵循后進先出,所以要返回數組最后一個元素,而且要更新size的值。

這樣對嗎?顯然沒有考慮棧為空的情況,修改如下:

獲取棧頂元素

三.Stack的使用

這里發現,Stack竟然沒有數組來存放元素,這是因為,它用的是它的父類Vector的數組

入棧:

調用了父類的addElement方法:

要確定容量,容量不夠就要擴容:

這里提到了capacityIncrement這個量,我們看一下這個量的解釋:

這是一個容量增量,在擴容時,數組容量的增加量就是我們所指定的capacityIncrement的大小,而當沒有指定這個量時,數組就會進行二倍擴容。

再繼續看grow方法:

newcapacity的大小就是我上面說的,用它與mincapacity比較,選擇其中的最大值進行擴容。注意,擴容是產生新的數組。

出棧:

調用了另一個方法:

首先檢查下標合法性,然后將它之后的元素整體向前一定一位。注意將末尾位置置為空!!!

獲取棧頂元素:

還是調用了另一個方法:

然后再用一個方法返回對應下標的元素:

用到了向下轉型

返回某一元素的下標:

用到了一個方法:

先判斷下表是否合法,再看o是否為null,否則走else語句

為什么要判斷是否為null?因為只有不為null時才能調用equals方法!!!否則就會空指針異常

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

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

相關文章

智能汽車加速車規級存儲應用DS2431P+TR 汽車級EEPROM 存儲器IC

DS2431PT&R是一款1024位1-Wire EEPROM芯片,由四頁存儲區組成,每頁256位。數據先被寫入一個8字節暫存器中,經校驗后復制到EEPROM存儲器。該器件的特點是,四頁存儲區相互獨立,可以單獨進行寫保護或進入EPROM仿真模式…

第2章 線性代數

目錄 1. 標量、向量、矩陣和張量2. 矩陣和向量相乘3. 單位矩陣和逆矩陣4. 線性相關和生成子空間5. 范數6. 特殊類型的矩陣和向量7. 特征分解8. 奇異值分解9. Moore-Penrose偽逆10. 跡運算11. 行列式 1. 標量、向量、矩陣和張量 標量(scalar):…

【 C++ 】特殊類設計

1、請設計一個類,不能被拷貝 拷貝只會出現在兩個場景中:拷貝構造函數以及賦值運算符重載,因此想要讓一個類禁止拷貝,只需讓該類不能調用拷貝構造函數以及賦值運算符重載即可。在C98和C11都有相對應的方法來解決此問題&#xff0c…

ssm172旅行社管理系統的設計與實現

** 🍅點贊收藏關注 → 私信領取本源代碼、數據庫🍅 本人在Java畢業設計領域有多年的經驗,陸續會更新更多優質的Java實戰項目希望你能有所收獲,少走一些彎路。🍅關注我不迷路🍅** 一 、設計說明 1.1 研究…

day03-Vue-Element

一、Ajax 1 Ajax 介紹 1.1 Ajax 概述 概念:Asynchronous JavaScript And XML,異步 的 JavaScript 和 XML。 作用: 數據交換:通過 Ajax 可以給服務器發送請求,并獲取服務器響應的數據。異步交互:可以在 不…

Java教程:SpringBoot項目如何對接Nacos實現服務發現治理,配置管理

–Nacos大家都知道,不懂的可以去官網或者網上查閱一下,本次給大家講解一下如何在SpringBoot項目中引入Nacos服務來進行服務治理與發現,配置管理等,在微服務當中是必不可少的,各個模塊之間可以通過Feign遠程調用&#x…

物聯網主機:為智能交通賦能

物聯網(IoT)技術的發展為智能交通領域帶來了許多創新的解決方案。而在物聯網應用中,物聯網主機起著關鍵的作用。本文將為大家介紹一款名為E6000的物聯網主機,它是一種多協議、多接口的物聯網主機,為智能交通系統的建設…

antvX6 - Vue自定義節點,并實現多種畫布操作,拖拽、縮放、連線、雙擊、檢索等等

一、 首先 antv x6 分為兩個版本 低版本和高版本 我這里是使用的2.0版本 并且搭配了相關插件 例如:畫布的圖形變換、地圖等 個人推薦 2.0版本,高版本配置多,可使用相關插件多,但是文檔描述小,仍在更新, 低…

小d和圖片壓縮

題目描述 小ddd和她對象小紅去海洋館玩了,但是由于小ddd拍照技術不好,他對象說把她拍的像嘎子! 小ddd看了看,發現是小紅最近長痘痘了,于是他為了討小紅開心,讓痘痘看不見,自學了圖像壓縮這個技…

裝飾器模式 詳解 設計模式

裝飾器模式 它允許你在不改變對象結構的情況下,動態地將新功能附加到對象上。 結構: 抽象組件(Component):定義了原始對象和裝飾器對象的公共接口或抽象類,可以是具體組件類的父類或接口。具體組件&…

固定排班計劃

目錄 1.按發車時間排序。 2.排班日期默認當天時間。 3.編輯不可修改線路和排班日期。 4.線路、車號、司機是否匹配,不匹配不可入庫(和其他表比),線路、發車時間、司機、車號、日期、上下行相同不可入庫(和自己表比…

GO語言學習筆記(與Java的比較學習)(一)

GO的優缺點: 此處引用華為云開發者聯盟的一篇文章: GO語言的亮點很明顯: GoDoc。 GoDoc的靜態語言分析能力很強大,可以直接從代碼和注釋生成漂亮的文檔。這一點區別于其他的類似工具如JavaDoc, PHPDoc或者JSDoc。這些工具需要添加…

如何在群暉Docker運行本地聊天機器人并結合內網穿透發布到公網訪問

文章目錄 1. 拉取相關的Docker鏡像2. 運行Ollama 鏡像3. 運行Chatbot Ollama鏡像4. 本地訪問5. 群暉安裝Cpolar6. 配置公網地址7. 公網訪問8. 固定公網地址 隨著ChatGPT 和open Sora 的熱度劇增,大語言模型時代,開啟了AI新篇章,大語言模型的應用非常廣泛,包括聊天機…

C# Socket通信從入門到精通(21)——TCP發送文件與接收文件 C#代碼實現

1、前言 我們在開發上位機軟件的過程中經常需要發送文件,本文就是介紹如何利用tcp客戶端發送文件、tcp服務器端接收文件,而且本文介紹的方法可以自動發送一個文件夾下的所有子目錄以及所有文件,經驗來自于實際項目,具備非常有價值的參考意義! 2、發送文件以及C#代碼 被發…

LeetCode第48天 買賣股票的最佳時機 買賣股票的最佳時機II 動態規劃

121. 買賣股票的最佳時機 class Solution { public:int maxProfit(vector<int>& prices) {// int res 0 ;// int low INT_MAX;// for (int i 0; i < prices.size(); i) {// low min(low, prices[i]);// res max(res, prices[i]-low);// }// return r…

低密度奇偶校驗碼LDPC(八)——QC-LDPC譯碼器FPGA設計概要

往期博文 低密度奇偶校驗碼LDPC&#xff08;一&#xff09;——概述_什么是gallager構造-CSDN博客 低密度奇偶校驗碼LDPC&#xff08;二&#xff09;——LDPC編碼方法-CSDN博客 低密度奇偶校驗碼LDPC&#xff08;三&#xff09;——QC-LDPC碼概述-CSDN博客 低密度奇偶校驗碼…

Linux系統--------內核參數調優、一鍵安裝nginx、tomcat調優

一、內核參數調優 默認的Linux內核參數考慮的是最通用場景&#xff0c;不符合用于支持高并發訪問的Web服務器的定義&#xff0c;根據業務特點來進行調整&#xff0c;當Nginx作為靜態web內容服務器、反向代理或者提供壓縮服務器的服務器時&#xff0c;內核參數的調整都是不同的…

Spring面試系列-02

1. Spring 中自動裝配有那些局限性? 自動裝配的局限性 重寫:仍需用<constructor-arg>和<property>配置來定義依賴,意味著總要重寫自動裝配。 基本數據類型:不能自動裝配簡單的屬性,例如基本數據類型、String字符串、和類。 模糊特性:自動裝配不如顯式裝配…

Vue點擊復制到剪切板

一、Vue2寫法 安裝 &#xff08;官網地址&#xff09; npm install --save vue-clipboard2 使用 //main.js import VueClipboard from vue-clipboard2 Vue.use(VueClipboard)//頁面使用 <button type"button"v-clipboard:copy"message"v-clipboard:su…

Mac電腦軟件開發的優缺點

Mac電腦軟件開發的優缺點 在軟件開發領域&#xff0c;Mac電腦一直以其獨特的優勢占有一席之地。然而&#xff0c;就像任何工具或平臺一樣&#xff0c;Mac電腦在軟件開發方面也存在其優點和缺點。本文將探討在Mac上進行軟件開發的利弊&#xff0c;幫助您了解是否應將Mac作為您的…