我创建了这个非常简单的堆栈概念的实现。 你能告诉我它是否正确和清洁?你看到任何糟糕的编码习惯吗?
public class MyStack
{
private static final int MAXELEMENTS = 10;
private int[] elements;
private int numElements;
public MyStack()
{
numElements = 0;
elements = new int[MAXELEMENTS];
}
public boolean isEmpty()
{
return (numElements == 0);
}
public boolean isFull()
{
return (numElements == MAXELEMENTS);
}
public void push(int e)
{
if (!isFull())
elements[numElements++] = e;
}
public int top()
{
if (!isEmpty())
return elements[numElements - 1];
else
return -1;
}
public void pop()
{
if (!isEmpty())
numElements--;
}
}
您可以使用以下代码:
class MyStackTestDrive
{
public static void main(String[] args)
{
MyStack s1 = new MyStack();
MyStack s2 = new MyStack();
s1.push(2);
s2.push(4);
System.out.println(s1.top());
System.out.println(s2.top());
}
}
答案 0 :(得分:2)
我的评论是:
int
的堆栈。你应该把它变成通用的numElements
是堆栈变量顶部的错误名称top
应throw
和空堆栈(传统)pop
应该返回堆栈的顶部。现在是void
答案 1 :(得分:2)
我会做一些事情,其中一些只是偏好:
答案 2 :(得分:1)
你应该尝试让你的堆栈通用(如果你想允许添加任何其他类型),你应该尝试通过在你的推送方法中使用检查并且如果它已经满了你自动增长它为它重新分配空间(创建另一个数组,可能是先前两次的空间,并逐个重新分配)。例如,你使用数组而不是链表的任何方式,恕我直言都是上帝的想法。