私はLinkedlistを使ってキュー構造を書いています。そして、キューに要素を追加する方法を書いています。問題はメソッドがvoid enqueueCharacter(char ch)の署名を持つべきであることを指定しているので、signiture void enqCharacter(queueNode q、char ch)で別のメソッドを書き、このメソッドをenqueueCharacterの内部で呼び出しました。この2つの方法でメソッド内のLinkedListの値を更新する違いは何ですか?
最初は失敗しましたが、私には何の手がかりもありません。試してみるとちょっとした変更が加えられました。しかし、実際には私は彼らがまったく同じ概念を持っているので(どちらも思うが)、どちらもうまく動作するか両方が失敗するべきだと思う。ここで
はqueueNodeの定義です:
class queueNode
{
char head;
queueNode tail;
queueNode(char c)
{
head = c;
tail = null;
}
}
とキューの宣言:
queueNode queue = null;
これは私が最初にキューを更新するために書いたものです:
public void enqCharacter(queueNode q, char ch)
{
if(q == null) q = new queueNode(ch);
else enqCharacter(q.tail, ch);
}
public void enqueueCharacter(char ch)
{
enqCharacter(queue, ch);
}
概念は、enqueueCharacter(char ch)を呼び出すとすぐにenqCharacter(queue、ch)を呼び出すことです。 se。 enqCharacter(queueNode q、char ch)では、qがヌルかどうかをチェックし、そうであれば最初の要素をqに追加し、それ以外の場合はq.tailに追加します。しかし、私はチェックして、キューの値を決して変更したことがないことが判明しましたが、メソッドにキューを渡してから(キューを渡してみましたが、まだ動作していませんでした)。
は、その後、私は少しそれを変更:
public void enqCharacter(queueNode q, char ch)
{
if(q.tail == null) q.tail = new queueNode(ch);
else enqCharacter(q.tail, ch);
}
public void enqueueCharacter(char ch)
{
if(queue == null) queue = new queueNode(ch);
else enqCharacter(queue, ch);
}
を私は他のアイデアを持っていないという理由だけで、私はこれが優れていると思うが、それは働いていないため、これらの変更を行いました。そして、私はまだなぜか分からない。
誰かがキューの代わりにテールを更新する必要がある理由を説明できる人はいますか?どうもありがとうございました!
ありがとうございます。しかし、nullの場合でもキューの参照を送信したい場合、どうしたらよいですか? &キューを使用しますか? – sy19890515
あなたの状況では、チェーンを考えてみましょう:AがBの友人であり、BがCのものであり、Cが誰の友だちでもないと仮定したとき、今度は誰かをCとして友人として添付したいので、方法とパラメータがnobody(null)の場合、新しいブランドの人がこのDに誰かにDという名前のメソッドを割り当てましたが、DメソッドをCに追加する方法はありません。それゆえ、Dは誰にも付けられずに宇宙のどこかに浮かんでいます。 また、javaでは&queueを使用できません。 – vvtx
説明ありがとう! – sy19890515