您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Java怎么使用一維數組來模擬棧的實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java怎么使用一維數組來模擬棧的實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
先進后出,優先解決壓棧的問題,之后解決彈棧和main方法
隨時模擬壓棧
隨時模擬彈棧
防止異常和各種錯誤
隨時可以遍歷“棧”中存在的變量的方法,壓棧彈棧棧幀清晰可見!
import java.util.Scanner;
public class MoveTest01 {
//局部變量供棧方法的遍歷數組使用
static int i;
//創建Object[]數組,作為棧,并且限制“內存上限”為5;
static Object[] os = new Object[5];
//創建數組,模擬入棧
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;//控制循環
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循環體
c = false;
} else if (z.equals("列出棧內存中儲存的變量指向的方法")) {
int index = -1;//創建棧幀
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());
}
}
//即將入方法區的方法,假設里面有變量(也可以直接把這些方法看成變量);
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怎么使用一維數組來模擬棧的實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。