国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
問(wèn)題陳述
迭代方法查找頂部和底部元素
示例
輸出
遞歸方法查找頂部和底部元素
結(jié)論
首頁(yè) Java java教程 Java程序以查找給定堆棧的頂部和底部元素

Java程序以查找給定堆棧的頂部和底部元素

Feb 07, 2025 am 11:25 AM
java

Java program to find the top and bottom elements of a given stack

本教程將介紹如何使用Java查找給定堆棧的頂部和底部元素。

堆棧代表遵循後進(jìn)先出(LIFO)原則的線性數(shù)據(jù)集,因此元素在同一位置添加和刪除。我們將進(jìn)一步探討兩種查找給定堆棧的頂部和底部元素的方法,即通過(guò)迭代遞歸

問(wèn)題陳述

我們將得到一個(gè)包含n個(gè)元素的堆棧數(shù)組,任務(wù)是在不以任何方式破壞它的前提下找到堆棧的第1個(gè)和第n個(gè)元素。因此,我們需要在自定義堆棧中使用迭代方法遞歸方法執(zhí)行peek()操作,確保原始堆棧保持不變。

輸入1

<code>stack = [5, 10, 15, 20, 25, 30]</code>

輸出1

<code>堆棧中的頂部元素是 --> 30
堆棧中的底部元素是 --> 5</code>

輸入2

<code>stack = [1000, 2000, 3000, 4000, 5000]</code>

輸出2

<code>堆棧元素:5000 4000 3000 2000 1000
底部元素:1000
頂部元素:5000</code>

迭代方法查找頂部和底部元素

對(duì)於第一種方法,我們將定義一個(gè)用作堆棧的數(shù)組,然後定義堆棧操作以通過(guò)迭代方法檢索所需元素。以下是查找給定堆棧的頂部和底部元素的步驟:

  • 使用等於6的maxSize值初始化堆棧stackArray[](在堆棧數(shù)組中最多容納6個(gè)元素),並將top設(shè)置為-1(表示空數(shù)組) 。
  • 通過(guò)push()操作將元素5、10、15、20、25和30壓入堆棧,同時(shí)遞增stackArray[top]中的top值。
  • 檢查堆棧是否為空。然後使用peek()通過(guò)返回stackArray[top]來(lái)查找頂部元素,因?yàn)閠op已經(jīng)設(shè)置為數(shù)組中的最後一個(gè)元素。
  • 最後,使用bottom()函數(shù)查找底部元素,該函數(shù)返回stackArray[0]的值,即堆棧數(shù)組中第一個(gè)也是最底部的元素。
  • 輸出最終的頂部和底部值。

示例

以下是使用迭代方法查找給定堆棧的頂部和底部元素的Java程序:

class MyStack {
    private int maxSize;
    private int[] stackArray;
    private int top;
    // 使用MyStack構(gòu)造函數(shù)初始化堆棧
    public MyStack(int size) {
        this.maxSize = size;
        this.stackArray = new int[maxSize];

        // 將Top變量初始化為-1,表示空堆棧
        this.top = -1;
    }
    // 將元素添加到stackArray中
    public void push(int value) {
        if (top < maxSize -1) {
            stackArray[++top] = value;
        } else {
            System.out.println("堆棧已滿(mǎn)");
        }
    }
    // 使用peek()查找頂部元素
    public int peek() {
        if (top >= 0) {
            return stackArray[top];
        } else {
            System.out.println("堆棧為空。");
            return -1;
        }
    }
    // 使用bottom()查找堆棧數(shù)組中的底部元素(第一個(gè)添加的值)
    public int bottom() {
        if (top >= 0) {
            return stackArray[0];
        } else {
            System.out.println("堆棧為空。");
            return -1;
        }
    }
}
public class Main {
    public static void main(String[] args) {
        MyStack stack = new MyStack(6); // 創(chuàng)建大小為6的堆棧
        // 將元素壓入堆棧
        stack.push(5);
        stack.push(10);
        stack.push(15);
        stack.push(20);
        stack.push(25);
        stack.push(30);
        // 檢索頂部和底部元素
        int topElement = stack.peek();
        int bottomElement = stack.bottom();
        // 打印最終輸出
        System.out.println("堆棧中的頂部元素是 --> " + topElement);
        System.out.println("堆棧中的底部元素是 --> " + bottomElement);
    }
}

輸出

<code>堆棧中的頂部元素是 --> 30
堆棧中的底部元素是 --> 5</code>

時(shí)間複雜度:在堆棧形成(壓入)期間為O(n),因?yàn)槊總€(gè)元素都添加到數(shù)組的末尾,並且索引遞增每次增加1,直到大小n。在peek和bottom操作期間為O(1),因?yàn)樗祷豷tackArray[top]和stackArray[0]。

空間複雜度:O(n),因?yàn)槲覀儗axSize固定為存儲(chǔ)n個(gè)元素,與堆棧的大小成正比。

遞歸方法查找頂部和底部元素

在這種方法中,我們將使用遞歸來(lái)查找堆棧中的頂部和底部元素。堆棧使用push()操作進(jìn)行初始化和形成,並遞歸地提取所需元素。以下是查找給定堆棧的頂部和底部元素的步驟:

  • 使用等於5的maxSize和最初設(shè)置為-1的top初始化堆棧。
  • 檢查堆棧大小是否不超過(guò)maxSize。使用push()函數(shù)將每個(gè)整數(shù)值壓入堆棧,將top遞增1並將值存儲(chǔ)在stackArray[top]中。
  • 使用遞歸方法查找底部元素,將當(dāng)前索引設(shè)置為top值。然後,如果索引為0,則返回stackArray[0](底部元素),否則使用遞減1的索引遞歸調(diào)用該函數(shù)。
  • 使用設(shè)置為0的索引查找頂部元素。在基本情況下,如果當(dāng)前索引等於top值,則返回stackArray[top]。否則,使用遞增1的索引遞歸調(diào)用該函數(shù)。
  • 遞歸地打印stackArray[]中的所有元素,基本情況是如果索引小於0,則停止遞歸。否則,調(diào)用該函數(shù)並使用遞減1的索引遞歸打印整數(shù)值。
  • 調(diào)用main函數(shù)並打印頂部和底部元素以及整個(gè)堆棧。

示例

以下是使用遞歸方法查找給定堆棧的頂部和底部元素的Java程序:

<code>stack = [5, 10, 15, 20, 25, 30]</code>

輸出

<code>堆棧中的頂部元素是 --> 30
堆棧中的底部元素是 --> 5</code>

時(shí)間複雜度:總共為O(n),因?yàn)樵诖笮閚的堆棧形成期間,一個(gè)元素在push()操作中花費(fèi)O(1)。在最壞情況下,遞歸操作花費(fèi)O(n)。

空間複雜度:由於遞歸調(diào)用堆棧,遞歸為O(n)。數(shù)組本身也使用O(n)來(lái)存儲(chǔ)n個(gè)元素。

結(jié)論

總之,這兩種方法都分別適用於各自的情況,其中直接數(shù)組方法提供了對(duì)堆棧元素的常數(shù)時(shí)間訪問(wèn)以及其簡(jiǎn)單的交互實(shí)現(xiàn)。另一方面,遞歸方法提供了對(duì)堆棧操作的遞歸視角,使其更通用並強(qiáng)調(diào)了算法方法。理解這兩種方法使您掌握堆棧的基礎(chǔ)知識(shí)以及何時(shí)使用任何一種方法的知識(shí)。

以上是Java程序以查找給定堆棧的頂部和底部元素的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

撰寫(xiě)PHP評(píng)論的提示 撰寫(xiě)PHP評(píng)論的提示 Jul 18, 2025 am 04:51 AM

寫(xiě)好PHP註釋的關(guān)鍵在於明確目的與規(guī)範(fàn),註釋?xiě)?yīng)解釋“為什麼”而非“做了什麼”,避免冗餘或過(guò)於簡(jiǎn)單。 1.使用統(tǒng)一格式,如docblock(/*/)用於類(lèi)、方法說(shuō)明,提升可讀性與工具兼容性;2.強(qiáng)調(diào)邏輯背後的原因,如說(shuō)明為何需手動(dòng)輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說(shuō)明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項(xiàng)與問(wèn)題,便於後續(xù)追蹤與協(xié)作。好的註釋能降低溝通成本,提升代碼維護(hù)效率。

編寫(xiě)有效的PHP評(píng)論 編寫(xiě)有效的PHP評(píng)論 Jul 18, 2025 am 04:44 AM

註釋不能馬虎是因?yàn)樗忉尨a存在的原因而非功能,例如兼容老接口或第三方限制,否則看代碼的人只能靠猜。必須加註釋的地方包括複雜的條件判斷、特殊的錯(cuò)誤處理邏輯、臨時(shí)繞過(guò)的限制。寫(xiě)註釋更實(shí)用的方法是根據(jù)場(chǎng)景選擇單行註釋或塊註釋?zhuān)瘮?shù)、類(lèi)、文件開(kāi)頭用文檔塊註釋說(shuō)明參數(shù)與返回值,並保持註釋更新,對(duì)複雜邏輯可在前面加一行概括整體意圖,同時(shí)不要用註釋封存代碼而應(yīng)使用版本控制工具。

通過(guò)評(píng)論提高可讀性 通過(guò)評(píng)論提高可讀性 Jul 18, 2025 am 04:46 AM

寫(xiě)好註釋的關(guān)鍵在於說(shuō)明“為什麼”而非僅“做了什麼”,提升代碼可讀性。 1.註釋?xiě)?yīng)解釋邏輯原因,例如值選擇或處理方式背後的考量;2.對(duì)複雜邏輯使用段落式註釋?zhuān)爬ê瘮?shù)或算法的整體思路;3.定期維護(hù)註釋確保與代碼一致,避免誤導(dǎo),必要時(shí)刪除過(guò)時(shí)內(nèi)容;4.在審查代碼時(shí)同步檢查註釋?zhuān)瑏K通過(guò)文檔記錄公共邏輯以減少代碼註釋負(fù)擔(dān)。

有效的PHP評(píng)論 有效的PHP評(píng)論 Jul 18, 2025 am 04:33 AM

寫(xiě)好PHP註釋的關(guān)鍵在於清晰、有用且簡(jiǎn)潔。 1.註釋?xiě)?yīng)說(shuō)明代碼背後的意圖而非僅描述代碼本身,如解釋複雜條件判斷的邏輯目的;2.在魔術(shù)值、舊代碼兼容、API接口等關(guān)鍵場(chǎng)景添加註釋以提升可讀性;3.避免重複代碼內(nèi)容,保持簡(jiǎn)潔具體,並使用標(biāo)準(zhǔn)格式如PHPDoc;4.註釋需與代碼同步更新,確保準(zhǔn)確性。好的註釋?xiě)?yīng)站在他人角度思考,降低理解成本,成為代碼的理解導(dǎo)航儀。

PHP開(kāi)發(fā)環(huán)境設(shè)置 PHP開(kāi)發(fā)環(huán)境設(shè)置 Jul 18, 2025 am 04:55 AM

第一步選擇集成環(huán)境包XAMPP或MAMP搭建本地服務(wù)器;第二步根據(jù)項(xiàng)目需求選擇合適的PHP版本並配置多版本切換;第三步選用VSCode或PhpStorm作為編輯器並搭配Xdebug進(jìn)行調(diào)試;此外還需安裝Composer、PHP_CodeSniffer、PHPUnit等工具輔助開(kāi)發(fā)。

探索基本的PHP語(yǔ)法 探索基本的PHP語(yǔ)法 Jul 17, 2025 am 04:11 AM

PHP基礎(chǔ)語(yǔ)法包括:1.使用包裹代碼;2.用echo或print輸出內(nèi)容,其中echo支持多參數(shù);3.變量無(wú)需聲明類(lèi)型,以$開(kāi)頭,常見(jiàn)類(lèi)型有字符串、整數(shù)、浮點(diǎn)數(shù)、布爾值、數(shù)組和對(duì)象。掌握這些要點(diǎn)有助於快速入門(mén)PHP開(kāi)發(fā)。

了解PHP變量類(lèi)型 了解PHP變量類(lèi)型 Jul 17, 2025 am 04:12 AM

PHP有8種變量類(lèi)型,常用包括Integer、Float、String、Boolean、Array、Object、NULL和Resource。要查看變量類(lèi)型,可使用gettype()或is_type()系列函數(shù)。 PHP會(huì)自動(dòng)轉(zhuǎn)換類(lèi)型,但建議關(guān)鍵邏輯用===嚴(yán)格比較。手動(dòng)轉(zhuǎn)換可用(int)、(string)等語(yǔ)法,但注意可能丟失信息。

了解PHP變量 了解PHP變量 Jul 17, 2025 am 04:11 AM

PHP變量以$開(kāi)頭,命名需遵循規(guī)則,如不能以數(shù)字開(kāi)頭、區(qū)分大小寫(xiě);變量作用域分為局部、全局和超全局;使用global可訪問(wèn)全局變量,但建議用參數(shù)傳遞;可變變量和引用賦值需謹(jǐn)慎使用。變量是存儲(chǔ)數(shù)據(jù)的基礎(chǔ),正確掌握其規(guī)則和機(jī)制對(duì)開(kāi)發(fā)至關(guān)重要。

See all articles