这是我所在的课程中的编程作业。我不希望您为我解决它,只需帮助我理解即可。我也要说,教授对程序的外观非常僵化,所以请不要给我一个更改任何名称的解决方案(除非应该保留。((或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
}