一个简单的ackdemo,并使用循环从数组,lifo返回值



这是我所在的课程中的编程作业。我不希望您为我解决它,只需帮助我理解即可。我也要说,教授对程序的外观非常僵化,所以请不要给我一个更改任何名称的解决方案(除非应该保留。((或push((,所以我向前介绍了4章,甚至可以了解他所寻找的东西。

这是他给我们的代码。

    public class SimpleStack {
        char[] data;//this array holds that stack
        int tos;    //index of top of stack
        //Construct an empty stack given it's size.
        public SimpleStack(int size){
            data = new char[size];
            tos = 0;
        }
        public void push(char ch){
            if(isFull()){
                System.out.println("--Stack is full.");
                return;
            }
            data[tos] = ch;
            tos++;
        }
        public char pop(){
            if(isEmpty()){
                System.out.println("--Stack is empty.");
                return (char)0;
            }
            tos--;
            return data[tos];
        }
        public isEmpty(){
            boolean empty(tos = 0);
        }
        public isFull(){
        }
}

我应该在底部完成两个布尔语句,我对自己的工作有一个想法。另外,我应该创建一个主要的方法来调用SimpleStack,并输入A-J作为十个字符测试,然后让我反向。我没有被告知我应该如何构建主,但是教授也不说我需要获取用户输入。因此,我可以创建一个已经填充A-J的数组。

我使用此代码测试了我的主体。我可以要求用户给我开始字母" a",然后创建一个循环以在" k"之前结束它,并且我还在测试如何发送到SimpleStack的尺寸。P>

import javax.swing.*;
public class SimpleStackDemo {
    public static void main(String[] args) {
        char c[] = "ABCDEFGHIJ".toCharArray();
        int aryL = c.length;
        SimpleStack sS1 = new SimpleStack(aryL);
        //System.out.println("The Array is, " + aryL); 

        //SimpleStack sS1 = new SimpleStack(//something);
    }
}

我想我想做的是询问用户应该有多大的数组,请使用它来呼叫Simplestack,然后询问他们想开始的字母,然后将其放在TOS上?

因此,isFull很容易做到。为什么?实例化SimpleStack时,用户必须指定堆栈的大小,并且该大小用于创建data。您知道您的索引,tos。您要做的就是检查tos是否是最后一个索引:

 return (tos == data.length - 1);

isEmpty遵循相同的想法。tos是您当前的索引。您要做的就是检查您的当前索引是否为0:

 return (tos == 0);

要注意的事情:

当您push()pop()时,您的tos会增加或减少,跟踪您的索引。因为您知道自己在堆栈中的位置,所以您可以随时分辨出您是否处于堆栈的任何一端。

在您的主要课程中:

public static void main(String[] args) {
    char c[] = "ABCDEFGHIJ".toCharArray();
    int aryL = c.length;
    SimpleStack sS1 = new SimpleStack(aryL); // You have a stack with size 10;
    System.out.println(sS1.isEmpty()); // on index 0, will return true.
    sS1.push('A'); // Adds A to top of empty stack, tos = 1 after this line
    sS1.push('B'); // Adds B to top of empty stack, tos = 2 after this line
    sS1.push('C'); // Adds C to top of empty stack, tos = 3 after this line
    sS1.pop();     // Removes top of empty stack, tos = 2 after this line
    sS1.push('C'); // Adds C to top of empty stack, tos = 3 after this line
    // Stack now looks like:
    //  C 
    //  B
    //  A -> bottom of stack
}

最新更新