Strona 1 z 1

Język C

: 11 wrz 2008, o 21:10
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ą??

Język C

: 11 wrz 2008, o 21:30
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.

Język C

: 12 wrz 2008, o 08:16
autor: robertm19
Nie chodzi mi o całą listę tylko o wybrane elementy. I co zrobić jeśli głowa przechowuje taki element?

Język C

: 12 wrz 2008, o 10:21
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;
        }
    }
}