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

目錄
問題陳述
迭代方法查找頂部和底部元素
示例
輸出
遞歸方法查找頂部和底部元素
結(jié)論
首頁 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)一步探討兩種查找給定堆棧的頂部和底部元素的方法,即通過迭代遞歸。

問題陳述

我們將得到一個(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ù)組,然后定義堆棧操作以通過迭代方法檢索所需元素。以下是查找給定堆棧的頂部和底部元素的步驟:

  • 使用等于6的maxSize值初始化堆棧stackArray[](在堆棧數(shù)組中最多容納6個(gè)元素),并將top設(shè)置為-1(表示空數(shù)組)。
  • 通過push()操作將元素5、10、15、20、25和30壓入堆棧,同時(shí)遞增stackArray[top]中的top值。
  • 檢查堆棧是否為空。然后使用peek()通過返回stackArray[top]來查找頂部元素,因?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("堆棧已滿");
        }
    }
    // 使用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í)間復(fù)雜度:在堆棧形成(壓入)期間為O(n),因?yàn)槊總€(gè)元素都添加到數(shù)組的末尾,并且索引遞增每次增加1,直到大小n。在peek和bottom操作期間為O(1),因?yàn)樗祷豷tackArray[top]和stackArray[0]。

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

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

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

  • 使用等于5的maxSize和最初設(shè)置為-1的top初始化堆棧。
  • 檢查堆棧大小是否不超過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í)間復(fù)雜度:總共為O(n),因?yàn)樵诖笮閚的堆棧形成期間,一個(gè)元素在push()操作中花費(fèi)O(1)。在最壞情況下,遞歸操作花費(fèi)O(n)。

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

結(jié)論

總之,這兩種方法都分別適用于各自的情況,其中直接數(shù)組方法提供了對(duì)堆棧元素的常數(shù)時(shí)間訪問以及其簡單的交互實(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)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系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脫衣機(jī)

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集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

了解PHP變量類型 了解PHP變量類型 Jul 17, 2025 am 04:12 AM

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

變量的魔力 變量的魔力 Jul 16, 2025 am 03:26 AM

VariableVariables是PHP中一種將變量值作為另一個(gè)變量名使用的特性,它通過$$var的形式實(shí)現(xiàn)動(dòng)態(tài)訪問變量、處理表單輸入和構(gòu)建靈活配置結(jié)構(gòu)等功能。例如$name="age";echo$$name相當(dāng)于輸出$age的值;常見使用場景包括:1.動(dòng)態(tài)訪問變量,如${$type.'_info'}可根據(jù)條件選擇不同變量;2.處理表單輸入時(shí)自動(dòng)賦值,但需注意安全隱患;3.構(gòu)建靈活的配置結(jié)構(gòu),通過字符串名稱獲取對(duì)應(yīng)值;使用時(shí)需注意代碼維護(hù)性、命名沖突和調(diào)試難度等問題,建議僅

用Python生成序列產(chǎn)生關(guān)鍵字 用Python生成序列產(chǎn)生關(guān)鍵字 Jul 16, 2025 am 04:50 AM

yield關(guān)鍵字用于創(chuàng)建生成器,按需產(chǎn)生值,節(jié)省內(nèi)存。1.替代return生成有限序列,如斐波那契數(shù)列;2.實(shí)現(xiàn)無限序列,如自然數(shù)列;3.處理大數(shù)據(jù)或文件讀取,逐行處理避免內(nèi)存溢出;4.注意生成器只能遍歷一次,可用next()或for循環(huán)調(diào)用。

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

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

了解PHP文件 了解PHP文件 Jul 17, 2025 am 04:13 AM

PHP文件是一種服務(wù)器端腳本語言文件,用于動(dòng)態(tài)網(wǎng)頁開發(fā),能處理表單數(shù)據(jù)、連接數(shù)據(jù)庫、生成動(dòng)態(tài)內(nèi)容、控制訪問權(quán)限。它以.php結(jié)尾,代碼在服務(wù)器上執(zhí)行后返回結(jié)果給瀏覽器。要運(yùn)行PHP文件需安裝本地服務(wù)器環(huán)境如XAMPP,把文件放至服務(wù)器目錄并通過瀏覽器訪問。PHP通常與HTML混合使用,建議學(xué)習(xí)前先掌握HTML、CSS、JavaScript及基本編程概念,多練習(xí)可快速上手。

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

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

進(jìn)行網(wǎng)絡(luò)掃描儀開發(fā) 進(jìn)行網(wǎng)絡(luò)掃描儀開發(fā) Jul 17, 2025 am 03:30 AM

開發(fā)Go網(wǎng)絡(luò)掃描器需把握四個(gè)核心點(diǎn):1.選擇合適的庫如net、gopacket;2.理解ICMP、TCP、SYN、UDP等底層協(xié)議;3.利用goroutine和channel設(shè)計(jì)并發(fā)機(jī)制并控制數(shù)量;4.確保掃描合規(guī)性避免濫用。網(wǎng)絡(luò)掃描基本方式包括ICMP探測主機(jī)存活、TCP/SYN/UDP端口檢測等,Go的net庫可實(shí)現(xiàn)基礎(chǔ)掃描,gopacket支持原始數(shù)據(jù)包操作。通過限制goroutine數(shù)量配合WaitGroup和緩沖channel可提升效率。注意事項(xiàng)包括合法授權(quán)、速率控制、避免公網(wǎng)大規(guī)模掃

常見的PHP變量錯(cuò)誤 常見的PHP變量錯(cuò)誤 Jul 17, 2025 am 04:08 AM

PHP變量使用常見錯(cuò)誤包括未定義變量、引用賦值不當(dāng)、類型比較不嚴(yán)謹(jǐn)和全局變量混亂。1.忽略變量未定義會(huì)引發(fā)Notice錯(cuò)誤,應(yīng)使用isset()或empty()檢查;2.引用賦值修改變量會(huì)影響其他變量,應(yīng)在循環(huán)后unset()清理;3.使用==會(huì)導(dǎo)致類型自動(dòng)轉(zhuǎn)換,應(yīng)優(yōu)先使用===進(jìn)行全等判斷;4.全局變量易造成混亂,建議避免或封裝成類屬性以提高代碼清晰度。

See all articles