データ メンバーの値に基づいてリストにノードを挿入しようとしています。基本的に、メンバーisVip
が true と評価された場合、そのノードが優先され、通常のノードの前に (ただし、既存の VIP ノードの後ろに) 挿入する必要があります。通常のノードは、リストの最後に追加されます。
2 つのポインターを使用してリストをステップ実行し、n > 2 の要素を挿入する方法については、よくわかっていると確信しています。ただし、n は現在のリスト メンバーの数です。ノードは 1 つだけです。
以下のコードの私の作業バージョンは次のとおりです。
void SelfStorageList::rentLocker(Locker e) {
int count = 0;
LockerNode *p = head;
if (isEmpty()) {
head = new LockerNode(e);
tail = head;
}
for(;p!=0;count++, p=p->next) {
if(count == 1) {
if (e.isVip) {
if(p->objLocker.isVip) {
LockerNode*p = new LockerNode(e, p->next);
}
}
}
}
ご覧のとおり、渡されたオブジェクトが VIP かどうか、次に現在のオブジェクトが VIP かどうかを確認しています。ここで、トラブルに見舞われました。両方が VIP であると仮定すると、次の行は次のようになります。
LockerNode*p = new LockerNode(e, p->next);
渡されたロッカー オブジェクトを正しい場所 (つまり、現在の VIP オブジェクトの後) に配置します。もしそうなら、
LockerNode*p = new LockerNode(e, p);
同等に前に配置しますか?配置場所を定義するノードの「次の」メンバーの使用または不在ですか、それともまったく異なるものですか?
誰かが私の疑問を解消してくれることを願っています。ばかげた質問に思えたらごめんなさい! ありがとう!