#1 2011-11-17 16:27:34

michal8m

Administrator

Zarejestrowany: 2011-02-03
Posty: 45
Punktów :   

Listy <-> Zad 2

Lista dwukierunkowa moze zostac „odwrócona” na dwa sposoby. Mozna pozmieniac wskazniki
we wszystkich elementach tak, aby dostac odwrotny porzadek lub mozna pozostawic strukture
listy bez zmian i parami pozamieniac dane elementów listy. Zaimplementuj te dwa sposoby.
void reverse(elem *&lista).





void reversee(elem *&lista) {
    elem* zap;
    elem* tym;
    while (true) {
        zap = lista->nast;
        tym = lista->poprz;
        lista->poprz = lista->nast;
        lista->nast = tym;
        if (!zap) break;
        lista = zap;
    }
}

int size(elem* pam) {
    int rozmiar = 0;
    while (pam) {
        rozmiar++;
        pam = pam->nast;
    };
    return rozmiar;
}

void reverse(elem *&lista) {
    elem* pam = lista;
    int rozmiar = size(lista);
    int skok = rozmiar - 1;
    int dana1;
    int dana2;
    for (int i = 0; i < rozmiar / 2; i++) {
        dana2 = lista->dane;
        for (int i = 0; i < skok; i++) {
            lista = lista->nast;
        }
        dana1 = lista->dane;
        lista->dane = dana2;
        for (int i = 0; i < skok; i++) {
            lista = lista->poprz;
        }
        lista->dane = dana1;
        lista = lista->nast;
        skok -= 2;
    }
    lista = pam;
}

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
https://www.hotels-world.pl/ spa ciechocinek cennik wycinkadrzew.bydgoszcz.pl https://portbrd.pl/