私はJavaで配列をコアとして使用してスタックを実装しようとしています。これは、スタックの仕組みを学び理解する目的に過ぎません。Javaで配列を使用してスタックを実装
私の考えはArray(ArrayListではない)を使用し、Stack構造を模倣しようとしました。この実装は静的なサイズを持ちます。空のスタックを示す-1で始まるポインタがあります。要素を追加するとポインタが増加します。要素を削除することについて心配する必要はありません。そのスペース(インデックス)が必要になると値を上書きするためです。
以下は、私のソースコードであるといくつかの質問で従います:
import java.util.*;
public class stackUsingArray{
private int[] myStack;
private int pointer;
/**
-Constructor
*/
public stackUsingArray()
{
myStack = new int[10];
pointer = -1;//keep track of where the top element is on the stack.
}
/**
-Pop method
*/
public int pop()
{
if(pointer==-1)
{
//throw exception here
}
return myStack[pointer--];
}
/**
-Push when the stack is not empty.
*/
public void push(int num)
{
if(pointer== myStack.size()-1)
{
//throw exception here
}
else
{
myStack[++pointer] = num;//add to the stack
}
}
/**
-return the top element of the stack
*/
public void peek()
{
return pointer;
}
/**
-return false if there is not more element on the stack
*/
public boolean isEmpty()
{
return (pointer == -1)? true : false;
}
public static void main(String [] arg)
{
stackUsingArray newStack = new stackUsingArray();
newStack.push(1);
newStack.push(2);
newStack.push(3);
System.out.println(newStack.pop());
}
}
私はスロー例外としてコメント部には:
public int pop()
{
if(pointer==-1)
{
//throw exception here
}
return myStack[pointer--];
}
が必要になります例外はどんな思います最も論理的?ほとんどの場合、私は画面上に印刷します。しかし、私は例外をスローする方法を学ぶことが大好きです。
この部分:自身がmyStack.sizeの操作を行う必要があります()-1
public void push(int num)
{
if(pointer== myStack.size()-1)
{
//throw exception here
}
else
{
myStack[++pointer] = num;//add to the stack
}
}
プログラム。私はクラス-1にサイズ-1を保持するプライベートメンバーを持つ方が良いのだろうか?私は順番に効率を意味します。
また、このスタックを実装するためにArrayListを使用する場合は、それはより効率的に実行されますか?つまり、ArrayListにはメソッドの内部呼び出しなどのオーバーヘッドがたくさんあります。
最後に、私のコードは素晴らしくないことを知っていますので、より良くするためにいくつかアドバイスをしてください!
Javaには既にStackクラスがありますか? http://www.tutorialspoint.com/java/java_stack_class.htm – SPlatten
@ SPlatten彼はそれがどのように機能するかをよりよく理解しようとしています。 – indjev99
@SPlatten Uは私が最初に書いた内容を尋ねる前に読んでいたはずです。とにかく、リンクをありがとう。 –