最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)入棧push和出棧pop過程

 更新時間:2024年12月17日 09:07:08   作者:Sshm_666  
文章詳細(xì)介紹了棧的概念、特點以及如何使用數(shù)組和鏈表實現(xiàn)棧,通過入棧(push)和出棧(pop)操作,展示了棧的數(shù)據(jù)處理過程,并提供了具體的代碼實現(xiàn)

java實現(xiàn)入棧push和出棧pop

什么叫棧

凡是滿足數(shù)據(jù)先進(jìn)后出的一種數(shù)據(jù)結(jié)構(gòu)都叫做棧。

特點

先進(jìn)后出,后進(jìn)先出。

數(shù)據(jù)一般存儲在兩種數(shù)據(jù)結(jié)構(gòu)中:1.數(shù)組、2.鏈表

實現(xiàn)入棧出棧可以用鏈表也可以用數(shù)組,數(shù)組是最簡單的一種方法,我們用數(shù)組來實現(xiàn):

棧的就像杯子一樣,模型如下圖:

那么我們往棧中放數(shù)據(jù)時入棧(push)就可以跟數(shù)組添加數(shù)據(jù)一樣,假如我們放入數(shù)組順序依次為3,5,7,9,那它在棧中的表現(xiàn)形式如下圖,先進(jìn)入的在棧底,最后進(jìn)入的在棧頂,當(dāng)然我們定義的數(shù)組會有長度限制,在到達(dá)棧頂時我們需要考慮給他擴(kuò)容

那出棧時我們需要從棧頂開始輸出值的大小,再出棧時就要輸出棧頂?shù)南乱粋€值,即9出棧后下一個出棧的就是7,如下圖:

那我們是需要定義一個指針index,當(dāng)入棧時我們讓index在數(shù)組里index++,出棧時,index指向的是棧頂元素上方,所以我們要先輸出棧頂元素就要使index-1,再讓index--;讓下一個元素成為棧頂,如下圖:

代碼如下

定義一個棧stack類:

public class Stack {
    //定義私有數(shù)組只能本類方法可以訪問
	private int[] arr=new int[10];
     //定義指針index,來指向棧頂元素上方
	private int index;
    //入棧方法,通過傳參來添加元素
	public void push(int val) {
        //考慮擴(kuò)容,如果數(shù)組長度不夠就先進(jìn)行擴(kuò)充
		if(index==arr.length) {
			int[] brr=new int[arr.length*2];
			for(int i=0;i<arr.length;i++) {
				brr[i]=arr[i];
			}
			arr=brr;
		}
        //index++是先賦值后加一
		arr[index++]=val;
	}
    //出棧方法
	public void pop() {
        //考慮到達(dá)棧底時程序的完整性,防止越界
		if(index==0) {
			System.out.println("已經(jīng)到達(dá)棧底");
			return;
		}
        //打印出棧頂元素,--index是先減一再賦值
		System.out.println(arr[--index]);
		
	}
}

通過測試類來測試結(jié)果:

public class Test {
	public static void main(String[] args) {
		Stack stack=new Stack();
		stack.push(1);
		stack.push(2);
		stack.push(3);
		stack.push(4);
		stack.push(5);
		stack.push(6);
		stack.push(7);
		stack.push(8);
		stack.pop();
		stack.pop();
		stack.pop();
		stack.pop();
		stack.pop();
		stack.pop();
		stack.pop();
		stack.pop();
		stack.pop();
        }
}

結(jié)果如下圖:

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot3整合Mybatis-plus3.5.3報錯問題解決

    Springboot3整合Mybatis-plus3.5.3報錯問題解決

    在日常學(xué)習(xí)springboot3相關(guān)的代碼時,在使用 SpringBoot3 整合 MyBatisplus 時出現(xiàn)了一些問題,花了不少時間處理,這篇文章主要介紹了Springboot3整合Mybatis-plus3.5.3報錯問題解決,需要的朋友可以參考下
    2023-11-11
  • RabbitMQ?Stream插件使用案例代碼

    RabbitMQ?Stream插件使用案例代碼

    這篇文章主要介紹了RabbitMQ?Stream插件使用案例代碼,2.4版為RabbitMQ流插件引入了對RabbitMQStream插件Java客戶端的初始支持,需要的朋友可以參考下
    2024-04-04
  • SpringBoot詳細(xì)探究講解默認(rèn)組件掃描

    SpringBoot詳細(xì)探究講解默認(rèn)組件掃描

    在項目中我們創(chuàng)建了Controller,這個Controller是如何被spring自動加載的呢?為什么Controller必須放在啟動類的同級目錄下呢
    2022-06-06
  • 關(guān)于BindingResult的使用總結(jié)及注意事項

    關(guān)于BindingResult的使用總結(jié)及注意事項

    這篇文章主要介紹了關(guān)于BindingResult的使用總結(jié)及注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • spring mvc中注解@ModelAttribute的妙用分享

    spring mvc中注解@ModelAttribute的妙用分享

    這篇文章主要給大家介紹了關(guān)于spring mvc中注解@ModelAttribute妙用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Android具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-09-09
  • 使用Spring boot + jQuery上傳文件(kotlin)功能實例詳解

    使用Spring boot + jQuery上傳文件(kotlin)功能實例詳解

    本文通過實例代碼給大家介紹了使用Spring boot + jQuery上傳文件(kotlin) 功能,需要的朋友可以參考下
    2017-07-07
  • 詳解Spring注解@Validated 失效分析

    詳解Spring注解@Validated 失效分析

    這篇文章主要介紹了Spring注解@Validated失效分析,文中有詳細(xì)代碼示例講解了@Validated為何失效,需要的小伙伴可以參考一下
    2023-04-04
  • java類中serialVersionUID的作用及其使用

    java類中serialVersionUID的作用及其使用

    這篇文章主要介紹了java類中serialVersionUID的作用及其使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Feign如何設(shè)置超時時間(不同情況)

    Feign如何設(shè)置超時時間(不同情況)

    本文主要介紹了Feign的超時時間設(shè)置,包括單獨使用Feign和在SpringCloud環(huán)境下的設(shè)置方式,以及與Ribbon和Hystrix的配合使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Spring中Bean的三種實例化方式詳解

    Spring中Bean的三種實例化方式詳解

    這篇文章主要給大家介紹了關(guān)于Spring中實例化bean的三種方式:構(gòu)造方法、靜態(tài)工廠和實例工廠,對我們學(xué)習(xí)有一定的參考價值,需要的小伙伴可以了解一下
    2022-06-06

最新評論

伊宁县| 郎溪县| 伊春市| 三都| 巴塘县| 德兴市| 绥德县| 固始县| 山丹县| 泽州县| 建湖县| 平阳县| 金沙县| 安龙县| 社会| 松江区| 长泰县| 张家港市| 河池市| 喀喇沁旗| 东乌| 大同市| 乐东| 白河县| 河源市| 十堰市| 辽源市| 临夏市| 丹寨县| 丹巴县| 巴彦淖尔市| 墨竹工卡县| 广水市| 东乌珠穆沁旗| 南开区| 凤凰县| 双江| 建湖县| 新余市| 五华县| 金秀|