簡體   English   中英

動態堆棧:Java

[英]Dynamic Stack : Java

誰能解釋,為什么“ tos”變量的值會像堆棧跟蹤中顯示的那樣變化?

以下是DynamicStack.java的代碼:

public class DynamicStack{
private int stck[];
int tos;

DynamicStack(int size){
    stck = new int[size];
    tos = -1;
}

                   // Following push method implements growable stack.
public void push(int item){
    if(tos == stck.length-1){
        int temp[] = new int[2*stck.length];    
        for(int i=0; i < stck.length; i++) temp[i] = stck[i];
        stck = temp;
        stck[++tos] = item;
    }

    else
        stck[++tos] = item;
}


public int pop(){
    if(tos < 0) {
        System.out.println("Stack underflow");
        return 0;
    } else return stck[tos--];
}}

以下是Test_Dynamic_Stack.java的代碼:

public class Test_Dynamic_Stack{
public static void main(String a[]){
    DynamicStack mystack1 = new DynamicStack(5);
    DynamicStack mystack2 = new DynamicStack(8);

    for(int i=0;i<7;i++) mystack1.push(i);
    for(int i=10;i<20;i++) mystack2.push(i);

    System.out.println("In mystack1");
    for(int i=0; i<7; i++) {
        System.out.println("Mystack1: "+mystack1.pop());
        System.out.println("Mystack2: tos = "+mystack1.tos);
    }

    System.out.println("In mystack2");
    for(int i=0; i<10; i++) {
        System.out.println("Mystack2: "+mystack2.pop());
        System.out.println("Mystack2: tos = "+mystack2.tos);
    }
}
}

以下是堆棧跟蹤:

In mystack1 Mystack1: 6 Mystack2: tos = 5 Mystack1: 5 Mystack2: tos = 4 Mystack1: 4 Mystack2: tos = 3 Mystack1: 3 Mystack2: tos = 2 Mystack1: 2 Mystack2: tos = 1 Mystack1: 1 Mystack2: tos = 0 Mystack1: 0 Mystack2: tos = -1 In mystack2 Mystack2: 19 Mystack2: tos = 8 Mystack2: 18 Mystack2: tos = 7 Mystack2: 17 Mystack2: tos = 6 Mystack2: 16 Mystack2: tos = 5 Mystack2: 15 Mystack2: tos = 4 Mystack2: 14 Mystack2: tos = 3 Mystack2: 13 Mystack2: tos = 2 Mystack2: 12 Mystack2: tos = 1 Mystack2: 11 Mystack2: tos = 0 Mystack2: 10 Mystack2: tos = -1

最后,得到了輸出.. :)

嘗試改變

for(int i=10;i<20;i++) mystack2.push(i); for(int i=0;i<20;i++) mystack2.push(i);

在您的代碼中,您僅推送了十個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM