簡體   English   中英

在twostack中對左/右使用布爾值

[英]Using Boolean for left/right in twostack

我在學校有任務。 這涉及使用布爾值 true/false 創建一個 twostack 數組,以便在堆棧中向右/向左訪問。

我有點綠色使用堆棧! 並且不知道如何實現這個布爾值 s*t

有小費嗎? 未完成的代碼摘錄如下:...

/**
 * Stacks of top-element of given stack and return it.
 * @param right true if right stable, false if left stable
 * @throws TwostackEmptyException if stable is empty
 */
@Override
public Object pop(Boolean right) throws TwostackEmptyException {
    return null;
}

/**
 *  Return top element of given stack, but doesnt remove it.
 *  @param right true if right, false if left
 *  @throws TwostackEmptyException if stacks empty.
 */
@Override
public Object peek(Boolean right) throws TwostackEmptyException {
    return null;
}

讓我們使用制作兩棧數組的基本形式; 采用常規數組並將其“拆分”成兩半。

如果您的數組的最大大小為 N,則數組的“左側”從“array[0]”延伸到“array[n/2]”(中間標記。)

“右側”將從“array[n/2]”到“array[n-1]”(結尾)。

例如,如果我們想將一輛玩具車放入“ToyCollection”數組的左側,那么大小為 10? 然后我們就可以把它放入“ToyCollection[0-4]”,前半部分。 我們只將動作人偶放入插槽“ToyCollection[5-9]”。

請注意,我們並不是真的數組一分為二,而是告訴自己我們不會將某些項目放在某些插槽中。

那么如何使用布爾值呢? 對於我上面的例子,假設我們有一個布爾值表示“WantToyCars”。 如果此 bool 為 True,則我們只想訪問數組的左側

因此,讓我們返回其中的一部分。 拆分數組的方法有多種,但我將僅使用所有數組都具有的內置“copyOfRange”函數。 一些偽代碼來說明這個想法;

public Toy[] getCars(Toy[] ToyCollection, boolean WantToyCars) {
     if (WantToyCars) {
        Toy[] ToyCars = Arrays.copyOfRange(ToyCollection, 1, (ToyCollection.length / 2));
        return ToyCars;
     }
}

如果這符合你的任務結構,那么我認為這會成功。

暫無
暫無

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

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