欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

什么叫棧

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

特點(diǎn)

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

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

實(shí)現(xiàn)入棧出??梢杂面湵硪部梢杂脭?shù)組,數(shù)組是最簡單的一種方法,我們用數(shù)組來實(shí)現(xiàn):

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

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

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

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

代碼如下

定義一個(gè)棧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á)棧底時(shí)程序的完整性,防止越界
		if(index==0) {
			System.out.println("已經(jīng)到達(dá)棧底");
			return;
		}
        //打印出棧頂元素,--index是先減一再賦值
		System.out.println(arr[--index]);
		
	}
}

通過測(cè)試類來測(cè)試結(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é)

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

相關(guān)文章

  • Java實(shí)現(xiàn)八種排序算法詳細(xì)代碼舉例

    Java實(shí)現(xiàn)八種排序算法詳細(xì)代碼舉例

    排序問題一直是程序員工作與面試的重點(diǎn),今天特意整理研究下與大家共勉!這篇文章主要介紹了Java實(shí)現(xiàn)八種排序算法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • java編程之遞歸算法總結(jié)

    java編程之遞歸算法總結(jié)

    這篇文章主要介紹了java編程之遞歸算法總結(jié),具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 本地編譯打包項(xiàng)目部署到服務(wù)器并且啟動(dòng)方式

    本地編譯打包項(xiàng)目部署到服務(wù)器并且啟動(dòng)方式

    這篇文章主要介紹了本地編譯打包項(xiàng)目部署到服務(wù)器并且啟動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java深入學(xué)習(xí)圖形用戶界面GUI之事件處理

    Java深入學(xué)習(xí)圖形用戶界面GUI之事件處理

    這篇文章主要介紹了基于Java GUI 事件處理方式,一個(gè)圖形界面制作完成了,在程序開發(fā)中只是完成了起步的工作。要想讓一個(gè)組件都發(fā)揮自己的作用.就必須對(duì)所有的組件進(jìn)行事件處理
    2022-05-05
  • 教你使用java將excel數(shù)據(jù)導(dǎo)入MySQL

    教你使用java將excel數(shù)據(jù)導(dǎo)入MySQL

    今天教大家如何使用Java將excel數(shù)據(jù)導(dǎo)入MySQL,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴呢很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringCloud LoadBalancer自定義負(fù)載均衡器使用解析

    SpringCloud LoadBalancer自定義負(fù)載均衡器使用解析

    LoadBalancerClient 是 SpringCloud 提供的一種負(fù)載均衡客戶端,Ribbon 負(fù)載均衡組件內(nèi)部也是集成了 LoadBalancerClient 來實(shí)現(xiàn)負(fù)載均衡,本文給大家深入解析 LoadBalancerClient 接口源碼,感興趣的朋友跟隨小編一起看看吧
    2023-04-04
  • Java通過反射來打印類的方法實(shí)現(xiàn)

    Java通過反射來打印類的方法實(shí)現(xiàn)

    本文主要介紹了Java通過反射來打印類的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java泛型 <T> T、 T、<T>的用法小結(jié)

    Java泛型 <T> T、 T、<T>的用法小結(jié)

    T在Java泛型中,被稱作類型變量, 有的方法返回值是<T> T,有的是T,區(qū)別在哪里,本文主要介紹了Java泛型 <T> T、 T、<T>的用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解下
    2023-12-12
  • SpringBoot整合數(shù)據(jù)庫訪問層的實(shí)戰(zhàn)

    SpringBoot整合數(shù)據(jù)庫訪問層的實(shí)戰(zhàn)

    本文主要介紹了SpringBoot整合數(shù)據(jù)庫訪問層的實(shí)戰(zhàn),主要包含JdbcTemplate和mybatis框架的整合應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-03-03
  • Java簡單計(jì)算器的實(shí)現(xiàn)

    Java簡單計(jì)算器的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java簡單計(jì)算器的實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評(píng)論