Witam
Mam do zrobienia grę w statki. Do każdego statku dołączona jest lista, której elementy powinny być usuwane wraz ze zbijaniem poszczególnych masztów. Niestety nie mam pojęcia czemu lista nie chce mi się usuwać. Usuwa mi się pierwszy element i reszta później nie rusza. Siedzę nad tym cały dzień i nie mogę wykombinować, co trzeba zrobić... :( Proszę, pomóżcie, rzućcie okiem na kod i powiedzcie, co jest nie tak. W załączniku wysyłam projekt. Funkcja usuwająca listę to "sprawdzczyzbity" w klasie plansza. Jeżeli komuś nie chce się ściągać projektu a zobaczyłby błąd gdybym wysłał samą funkcję, to wstawiam kod:

void Plansza::sprawdzczyzbity(Statek &S)
{
    maszty *n;
    maszty *p;
    maszty *tmp;
    n=S.m;
    p=NULL;
    while(n!=NULL)
    {
        if(P[n->y][n->x]=="[x]") // funkcja sprawdza, czy element, który wybraliśmy do zbicia jest oznaczony na tablicy(planszy) jako [x](maszt zbity)
        {
            n=S.m;
            if(n==S.m)
            {
                S.ilezostalo--;
                tmp=n;
                S.m=S.m->nast;
                n=S.m;
                delete tmp;
            }
            else
            {
                S.ilezostalo--;
                p->nast=n->nast;
                tmp=n;
                n=n->nast;
                delete tmp;
            }

        }
        else
        {
            p=n;
            n=n->nast;
        }


    }
    if(S.ilezostalo==0)
    {
        S.zbity=1;
        cout<<"Statek przeciwnika zbity.";
    }

}
 

"maszty" to struktura wchodząca w skład klasy Statek składająca się z danych x i y - współrzędnych pola, na którym jest maszt statku i *nast - wskaźnika na następny element listy
S.m - to pierwszy element(głowa) listy, z której składa się statek
S.ilezostalo - ile masztów zostało do zbicia. Na początku ma wartość równą ilości masztów

Będę bardzo wdzięczny za jakąkolwiek pomoc, bo siedzę nad tym praktycznie cały dzień i nie przychodzi mi do głowy, co może być źle ;/