リストをフィルタリングしようとしています。リストは正しく作成され、記入されていますが、私は自分の書類から2回の記入を受けています。それはそうでなければなりません。今私はそれらをフィルタリングしようとしていると私はそれがかなりうまく考えられているが、正しく動作していないと思う。1つのリンクリストから値を削除する
Anmeldung* delete_object(Anmeldung* b){
Anmeldung* tmp = b;
b = b->next;
delete(tmp);
return b;
}
void filter_list(Anmeldung* b){
Anmeldung* tmp = b;
while(b!=NULL){
std::string info = b->Matrikelnummer;
while(tmp!=NULL){
if(tmp->Matrikelnummer == info){
tmp = delete_object(tmp);
}else
tmp = tmp->next;
}
b = b->next;
tmp = b;
}
}
私はリストを繰り返し、すべての値をリスト全体と比較しようとしています。私が探している価値はMatrikelnummer
です。もし2人の人が同じMatrikelnummerを持っていれば、その人は削除されます。
これは私の構造体Anmeldungです。
struct Anmeldung {
Anmeldung* next;
std::string Nachname; // Name Teilnehmer
std::string Vorname; // Vorname Teilnehmer
std::string Email; // Email Adresse Teilnehmer
std::string Matrikelnummer; // Matrikelnr. Teilnehmer
std::string Studienrichtung; // Studienrichtung Teilnehmer
std::string Semester; // Studiensemester Teilnehmer
std::string G1name; // Name Wunschkandidat fuer Praktikumsgruppe
std::string G1vorname; // Vorname Wunschkandidat
std::string Anmerkung; // Freier Text
};
私はwhile
ループが正しいとdelete_object
が間違っていると思いますが、私はどこか、どのように見ることができない。これは私の教授から提供されます。 コンテナリストなどを使用することはできません。私は構造体しか持っていません。だから二重リンクは何もない。
私は 'tmp'をmy delete_objectまたは?に再割り当てします。だから、tmpには次のオブジェクトの値があるはずですか? 'Matrikelnummer'と同じ値を持つものだけではありません –
"登録 "のドイツ語は英語の句"動物の糞 "のように聞こえるのは残念です... –