
Patrick B. answered 03/18/21
Math and computer tutor/teacher
class Stack
{
protected int count;
protected String A[];
private String tempA[];
public boolean IsEmpty() { return(count==0); }
public int GetCount() { return(count); }
public Stack()
{
A = new String[1];
count=0;
}
public void Push(Object o)
{
// System.out.println(" pushing " + (String) o + " : count = " + count);
if (count==0)
{
A[0] = new String((String) o);
count=1;
}
else
{
tempA = new String[count+1];
for (int iLoop=1; iLoop<=count; iLoop++)
{
tempA[iLoop] = new String(A[iLoop-1]);
}
tempA[0]= new String( (String) o);
// System.out.println(">"+tempA[0]+"<");
A = tempA;
tempA=null;
count++;
}
}
public Object Pop()
{
Object objReturn = null;
if (count>0)
{
objReturn= (Object) A[0];
//System.out.println("Popping >"+ (String) objReturn + "<");
tempA = new String[count-1];
for (int iLoop=1; iLoop<count; iLoop++)
{
tempA[iLoop-1] = new String(A[iLoop]);
//System.out.println("copying " + iLoop + " to " + (iLoop-1));
}
A = tempA;
tempA=null;
count--;
}
return(objReturn);
}
public Object Peek()
{
return (
(Object) new String(A[0])
);
}
public static void main(String args[])
{
Stack myStack = new Stack();
String cityNameStr="Tokyo";
myStack.Push((Object) cityNameStr);
cityNameStr="Atlanta";
myStack.Push((Object) cityNameStr);
cityNameStr="San Diego";
myStack.Push((Object) cityNameStr);
cityNameStr="Miami";
myStack.Push((Object) cityNameStr);
cityNameStr="Charlotte";
myStack.Push((Object) cityNameStr);
cityNameStr="Toronto";
myStack.Push((Object) cityNameStr);
cityNameStr="Indianapolis";
myStack.Push((Object) cityNameStr);
cityNameStr="Salt Lake City";
myStack.Push((Object) cityNameStr);
cityNameStr="Sidney";
myStack.Push((Object) cityNameStr);
int n = myStack.GetCount();
for (int iLoop=0; iLoop<n; iLoop++)
{
String str = (String) myStack.Pop();
System.out.println(str);
}
if (myStack.Pop()==null)
{
System.out.println(" That's all folks! ");
}
}
}