Język C

robertm19
Użytkownik
Użytkownik
Posty: 1847
Rejestracja: 8 lip 2008, o 21:16
Płeć: Mężczyzna
Lokalizacja: Staszów/Warszawa
Podziękował: 7 razy
Pomógł: 378 razy

Język C

Post autor: robertm19 »

Jak napisać funkcje która będzie na liście z głową usuwać elementy włącznie z głową. Chodzi mi tutaj o to jak skasować głowę z listy i zastąpić nią inną??
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

Język C

Post autor: Rafal88K »

Nie wiem o co dokładnie może Ci chodzić ;) Może o coś takiego:

Kod: Zaznacz cały

struct Element
{
    int value;
    Element* next;
};

(...)

void List::push_front(int inValue)
{
    ++mSize;
    
    Element* e = new Element();
    e -> value = inValue;
    e -> next = NULL;
    
    if(mHead == NULL) {
        mHead = mTail = e;
    }
    else {
        e -> next = mHead;
        mHead = e;
    }
}
robertm19 pisze:Jak napisać funkcje która będzie na liście z głową usuwać elementy włącznie z głową.
Czy chcesz skasować całą listę?

[ Dodano: 11 Września 2008, 21:33 ]
Temat mógłby być trochę inny - bo tak "Język C" to trochę mało mówi.
robertm19
Użytkownik
Użytkownik
Posty: 1847
Rejestracja: 8 lip 2008, o 21:16
Płeć: Mężczyzna
Lokalizacja: Staszów/Warszawa
Podziękował: 7 razy
Pomógł: 378 razy

Język C

Post autor: robertm19 »

Nie chodzi mi o całą listę tylko o wybrane elementy. I co zrobić jeśli głowa przechowuje taki element?
Rafal88K
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 15 mar 2007, o 16:52
Płeć: Mężczyzna
Lokalizacja: Lublin
Podziękował: 28 razy
Pomógł: 54 razy

Język C

Post autor: Rafal88K »

Tak wygląda kasowania pierwszego elementu z listy, możesz tą metodę zmodyfikować, żeby kasować dowolny element.

Kod: Zaznacz cały

void List::pop_front()
{
    if(mHead != NULL) {
        --mSize;
        
        if(mHead == mTail) {
            delete mHead;
            mHead = mTail = NULL;
        }
        else {
            Element* e = mHead;
            e = e -> next;
            delete mHead;
            mHead = e;
        }
    }
}
ODPOWIEDZ