C++ で Stack を使い始めています。プッシュとポップの関数を作ります。pop 関数を呼び出すと、スタックの一番上のデータまたは情報が削除されます。
最初にスタック内のデータ位置を見つけて、その位置のデータを削除することは可能ですか?
C++ で Stack を使い始めています。プッシュとポップの関数を作ります。pop 関数を呼び出すと、スタックの一番上のデータまたは情報が削除されます。
最初にスタック内のデータ位置を見つけて、その位置のデータを削除することは可能ですか?
いいえ、スタックの要点は、FIFO、または先入れ先出しであるということです。スタックにプッシュしたデータは、その上のデータがスタックからポップされるまでアクセスできません。
最上位レイヤーの下にあるデータにアクセスする必要がある場合は、配列やリストなどの別のデータ構造を使用するだけです。
C++ のデータ構造について読むことをお勧めします。これにより、各データ構造が何のために使用されているか、また特定のデータ構造をいつ使用する必要があるかについて、より良いアイデアが得られます。幸運を!
最初に言っておきますが、スタックはこのようにプレイする必要がある DS ではないと言っている仲間に耳を傾ける必要があります。スタックは、プッシュおよびポップ操作に従うように設計されています。任意の位置から任意の要素を削除しようとする場合、そのような目的のために正確に別のデータ構造を持つことのポイントは何ですか?配列リストまたはリンクされたリストだけを使用できます。
そうは言っても、あなたが求めることは可能ですが、可能であるからといって、そうすべきではありません。そうしないと、このような DS を持つという目的全体が無効になります。スタックのサイズを簡単に見つけることができます。それを行うと、スタックを反復処理して、その位置から特定の要素を削除するだけです。しかし、私はむしろ、あなたはそれをしないでください stack 。
自分でスタックをゼロから実装している場合は、そうです。それを行う方法は、実装方法によって異なります。フラットメモリの場合は、削除したい要素の次の要素をその要素の位置に移動して上書きする必要があります。リンクされたリストの場合は、削除する要素の前にある要素を、その後の要素を指すようにする必要があります。
しかし、これはスタックでは珍しい操作です (スタックは通常、最後までプッシュしてそこからポップするだけです)。おそらく、必要なのは単に配列またはリンクされたリストです。