1

私は、ループや再帰を使わずに C 言語で動的キューを実装するという使命を与えられました。キューには次の機能が含まれている必要があります: インストール、破棄、追加、削除、ピーク。リンク構造を作成することを考えました。そのようにして、各リンクには次のリンクなどへのポインターがあります..しかし、問題は、ループなしでdestruct関数を実行する方法がわからないことです。私が考えることができる唯一の解決策of は、各リンクを remove 関数に送信するループを作成しています (ただし、ループなしで行う必要があります)。ループなしで破壊機能を実行する可能性はありますか?

ps destruct 関数は、キューに使用したすべてのメモリを解放する必要があります。

4

3 に答える 3

1

リンクされたリストに基づいてキューを作成する必要は実際にはありません。これには、ランダムに割り当てられた要素と空間的な局所性の欠如というすべての欠点があり、デバッグが比較的難しくなり、リンクされたリストの主な利点を使用しません ( O(1)) での挿入) は、挿入ポイントが 1 つしかないキューであるためです (または両端の挿入ポイントの場合は 2 つ)。

代わりに、配列を使用して、先頭と末尾のインデックス変数を維持し、最後にラップアラウンドするときに循環インクリメントを使用し、必要に応じて再割り当てすることができます。キューが基本的なデータ型を保持している場合、これにより、キュー全体の割り当てを一度に解除することもできます。配列を解放するだけです (ただし、手動で割り当てなければならなかった要素については、移動しない限り、反復的な削除を回避する方法がわかりません)。 c++ へ)。

于 2013-10-04T12:54:48.237 に答える