99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

App下載

Java數據結構 使用一維數組來模擬棧的實現

猿友 2021-08-03 10:42:09 瀏覽數 (2312)
反饋

棧是數據結構中一種特殊的線性表,棧的特點是先進后出。本篇文章我將通過Java代碼,用Java中的一維數組來模擬棧中壓棧彈棧的效果。以下是詳情內容,希望能夠對大家的學習有所幫助!

思路

先進后出,優(yōu)先解決壓棧的問題,之后解決彈棧和main方法

功能

  1. 隨時模擬壓棧
  2. 隨時模擬彈棧
  3. 防止異常和各種錯誤
  4. 隨時可以遍歷“?!敝写嬖诘淖兞康姆椒ǎ瑝簵棗逦梢?!

使用演示:

壓棧:

2021041311311582

棧滿檢測:

2021041311311583

遍歷棧內存和棧幀:

2021041311311584

只要棧中有變量就會輸出棧幀:

2021041311311585

彈棧:

2021041311311586

??諜z測:(沒有變量,棧幀不輸出?。?/strong>

2021041311311587

源碼:

import java.util.Scanner;
public class MoveTest01 {
    //局部變量供棧方法的遍歷數組使用
    static int i;
    //創(chuàng)建Object[]數組,作為棧,并且限制“內存上限”為5;
    static Object[] os = new Object[5];
    //創(chuàng)建數組,模擬入棧
    static num[] l = {new A(),new B(),new C(),new D(),new E(),new F()};
    public static void main(String[] args) {
        int a =0;//遍歷Object[]數組時的控制
        boolean c = true;//控制循環(huán)
        boolean d = true;//檢測棧內存使用量防止異常
        Scanner s = new Scanner(System.in);
        do {
            System.out.println("===========================");
            System.out.print("請選擇”壓棧““彈?!被颉傲谐鰲却嬷袃Υ娴淖兞恐赶虻姆椒ā?,輸入“退出”將會結束程序!:");
            String z = s.next();
            //判定用戶輸入
            if (z.equals("壓棧")) {
                //防止數列超限
                if(a > (os.length - 1)){
                    d = false;
                    System.out.println("棧內存已滿!請彈棧后壓棧!");
                }
		if(d){
                  //調用num[]數組模擬入棧
                  l[a].leng();
                  a++;                }
                //防止if(d)鎖死
                d = true;
            } else if (z.equals("彈棧")) {
                //調用pop方法,模擬彈棧,并初始化計數
                pop();
                a = 0;
                i = 0;
            } else if (z.equals("退出")) {
                //結束do...while循環(huán)體
                c = false;
            } else if (z.equals("列出棧內存中儲存的變量指向的方法")) {
                int index = -1;//創(chuàng)建棧幀
                if(os[0] == null){
                    System.out.println("棧內沒有已裝載的變量!");
                }
                for (int k = os.length - 1; k > -1; k--) {
                    //判定如果Object[]數組內的各個屬性,如果不等于null則輸出聲明
                    if(!(os[k] == null)){
                        index++;
                        System.out.println("棧內存中已入棧的變量的方法有:" + os[k]);
                    }
                }
                //如果棧幀的值不為0,則輸出結果
                if(!(index == -1)){
                    System.out.println(os[index] + "《== 棧幀指向");
                }
            }
        }while (c);
    }
    //模擬棧
    public static void Zhan(Object o){
        if(i < os.length) {
            //給Object[]數組賦值
            os[i] = o;
            System.out.println("目標:" + os[i] + "的所有變量已壓入棧內!");
            i++;
        }
    }
       public static void push(String c){
        //接收下面類傳來的參數并賦值給Zhan()
        Zhan(c);
    }
       public static void pop(){
        //檢測數組第一位的值是不是空,如果是則輸出消息
        if(os[0] == null){
            System.out.println("棧內沒有已裝載的變量!無法彈棧!");
        }
        //模擬彈棧
        for(int k = (os.length - 1);k >= 0;k--){
            //遍歷數組,將數組內不是null的值全部輸出并初始化為null
            if(!(os[k] == null)) {
                System.out.println(os[k] + "的所有變量:已彈出內存!");
                os[k] = null;
            }
        }
    }
}
class num{
    public void leng(){
        //讓下面的方法有個共同的父類,并且調用時統一輸出自己的名字給棧
        MoveTest01.push(getClass().getName());
    }
}
//即將入方法區(qū)的方法,假設里面有變量(也可以直接把這些方法看成變量);
class A extends num{
    public A() {}
}
class B extends num{
    public B() {}
}
class C extends num{
    public C() {}
}
class D extends num{
    public D() {}
}
class E extends num{
    public E() {}
}
class F extends num{
    public F() {}
}

以上就是通過 Java 的一維數組來展示數據結構,棧的詳細內容,有興趣的朋友可直接試一試。想要了解更多關于 Java 數據結構的其他資料請關注W3Cschool其它相關文章!也希望大家能夠多多地支持!

0 人點贊