Lista C++ odniesienie do konkretnego elementu

0

Czy mógłby mi ktoś, wytłumaczyć jak mam się odnieść do konkretnego elementu w liście dwukierunkowej/jednokierunkowej. Poniżej przedstawiam mój program pobiera on uczniów ale nie mogę żadnego z nich usunąć bo nie wiem jak odnieść się do konkretnego ucznia.

#include <iostream>
#include <new>
#include <cstdlib>

using std::cin;
using std::cout;
using std::endl;


struct uczen
{
	int liczba;
	char nazwisko[50];
	char imie[50];
	int wiek;
	int wzrost;
	uczen *nastepny;
	uczen *poprzedni;


};


int main()
{

	char odp;
	cout << "Czy chcesz dodac ucznia ?(T/N)" << endl;
	cin >> odp;
	uczen *temp;
	uczen *glowa;
	glowa = new uczen;
	glowa ->nastepny = NULL;
	glowa ->poprzedni = NULL;

	while(odp!='n')
	{
		cout << "Podaj imie " << endl;
		cin >> glowa->imie;
		cout << "Podaj nazwisko " << endl;
		cin >> glowa->nazwisko;
		cout << "Podaj wiek " << endl;
		cin >> glowa->wiek;
		cout << "Podaj wzrost " << endl;
		cin >> glowa->wzrost;

		cout << "Czy chcesz dodac kogos nowego? n= odmowa " << endl;
		cin >> odp;
	
	}
	cout << "Chcesz kogos usunac?" << endl;
	cin >> odp;
	if(odp=='t')
	{
		char a[50];
		cout << "Podaj nazwisko ucznia ktorego chcesz usunac " << endl;
		cin >> a;
		if(a==glowa->nazwisko)
		{
			glowa = glowa->nastepny;
			temp = glowa;
			delete temp;
			temp = glowa;
		
		
		}

		
	
	
	
	
	}

system ("pause");
}
0

zrób iterator który będzie chodził po tej strukturze

0

http://cplusplus.com/reference/stl/list/remove/

 
#include <list>
#include <iostream>

int main()
{
    std::list<int> lista;

    std::list<int>::iterator it;
    it = lista.begin();

    while(it != lista.end())
    {
        std::cout << *it;
        ++it;
    }
}
0

To nie może działać.
char nazwisko[50];
char a[50];
if(a==glowa->nazwisko)

A tu potrzebna iteracja.
if(a==glowa->nazwisko)
{
glowa = glowa->nastepny;
temp = glowa;
delete temp;
temp = glowa;

            }

Dlaczego następny?

1 użytkowników online, w tym zalogowanych: 0, gości: 1