デキューメソッドをLinkedList ADTの実装に使用しようとしています。ただし、終了の代わりにキューの先頭から削除しています。これに関する助け?私はCには新しく、CにJavaのエクササイズを移植しようとしています。リストの最後のノードを削除することになっています。ここでLinkedListでのデキュー
は私のデキュー方法です:
static void linkedQueueDequeue(Queue* q) {
LinkedQueue *lq = ((LinkedQueue*)q->privateData);
Node* temp = lq->head->next;
lq->head->data = lq->head->next->data;
lq->head->next = temp->next;
free(temp);
lq->size--;
}
最後のノードをデキューしようとすると、ここで出力です:
=====================
|Testing LinkedQueue|
=====================
adding 1 to first node
adding 2 to second node
adding 3 to third node
adding 4 to fourth node
[1,2,3,4]
dequeue last node
should print [1,2,3]
[2,3,4]
return first node
peek: 2
what's the size?
size: 3
あなたのコードは、リストの先頭を明確に削除します。代わりにリストの末尾に何をしようとしましたか? – Mat
ヒント:最後のノードを削除する場合は、リンクされたリストを2番目の最後の要素までトラバースし、最後の要素を削除する必要があります。 –
は、最後のノードを取得するためにwhileループが必要なようです。 –