• Nie Znaleziono Wyników

Programowanie i struktury danych Programowanie i struktury danych

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie i struktury danych Programowanie i struktury danych"

Copied!
20
0
0

Pełen tekst

(1)

Programowanie i struktury danych Programowanie i struktury danych

Wykład 10 Wykład 10

Dr Piotr Cybula <piotr.cybula@wmii.uni.lodz.pl>

Dr Piotr Cybula <piotr.cybula@wmii.uni.lodz.pl>

(2)

2/2/2020 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Struktury wielokrotnie czone łą Struktury wielokrotnie czone łą

lista łączona dwukierunkowa:

adres węzła pierwszego i ostatniego

każdy węzeł posiada adres węzła następnego (pusty dla ostatniego) i poprzedniego (pusty dla pierwszego)

drzewo binarne:

adres węzła głównego (korzenia)

każdy węzeł posiada adresy węzłów głównych lewej i prawej gałęzi (puste w węzłach ostatniego poziomu, tzw. liściach) oraz węzła nadrzędnego

drzewo zbalansowane:

adres węzła głównego (korzenia)

każdy węzeł posiada przynajmniej dwa adresy węzłów głównych gałęzi

długości wszystkich gałęzi (liczby węzłów w gałęziach) są zbliżone

(3)

Lista czona dwukierunkowa łą Lista czona dwukierunkowa łą

zalety:

usuwanie ostatniego elementu bez iteracji po całej liście

brak konieczności implementacji metody odwracającej listę

wady:

dodatkowe zużycie pamięci na adresy węzłów poprzedzających

konieczność aktualizacji pary wskaźników przy dodawaniu/usuwaniu

head tail

(4)

4/4/2020 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Wstawianie Wstawianie

A next

B next

C

head tail

prev prev

pred succ

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(5)

Wstawianie Wstawianie

head tail

pred succ

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

(6)

6/6/2020 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Wstawianie Wstawianie

A next

B next

C

head tail

prev prev

pred succ

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

creator

X next

prev

(7)

Wstawianie Wstawianie

head tail

pred succ

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

(3) przestawiamy wskaźnik next w węźle wskazywanym przez pred (lub wskaźnik head gdy pred jest pusty) oraz wskaźnik prev w węźle wskazywanym przez succ (lub wskaźnik tail gdy succ jest pusty) na nowy węzeł

creator

X next

prev

(8)

8/8/2020 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Wstawianie Wstawianie

A next

B next

C

head tail

prev prev

pred succ

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

(3) przestawiamy wskaźnik next w węźle wskazywanym przez pred (lub wskaźnik head gdy pred jest pusty) oraz wskaźnik prev w węźle wskazywanym przez succ (lub wskaźnik tail gdy succ jest pusty) na nowy węzeł

creator

X next

prev

(9)

Wstawianie Wstawianie

head tail

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

(3) przestawiamy wskaźnik next w węźle wskazywanym przez pred (lub wskaźnik head gdy pred jest pusty) oraz wskaźnik prev w węźle wskazywanym przez succ (lub wskaźnik tail gdy succ jest pusty) na nowy węzeł

X next

prev

(10)

1010/20/20 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Wstawianie Wstawianie

A next

B next

C

head tail

prev prev

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

(3) przestawiamy wskaźnik next w węźle wskazywanym przez pred (lub wskaźnik head gdy pred jest pusty) oraz wskaźnik prev w węźle wskazywanym przez succ (lub wskaźnik tail gdy succ jest pusty) na nowy węzeł

X next

prev

(11)

Wstawianie Wstawianie

head tail

(1) ustawiamy wskaźnik pred na węźle, za którym wstawiamy, a succ na węźle, przed którym wstawiamy

(2) tworzymy nowy węzeł (creator) z podaną wartością i wartością succ jako adresem następnego (next) oraz pred jako adresem poprzedniego (prev)

(3) przestawiamy wskaźnik next w węźle wskazywanym przez pred (lub wskaźnik head gdy pred jest pusty) oraz wskaźnik prev w węźle wskazywanym przez succ (lub wskaźnik tail gdy succ jest pusty) na nowy węzeł

(12)

1212/20/20 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Usuwanie Usuwanie

A next

B next

C

head tail

prev prev

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(13)

Usuwanie Usuwanie

head tail

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(14)

1414/20/20 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Usuwanie Usuwanie

A next

B next

C

head tail

prev prev

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

killer

(15)

Usuwanie Usuwanie

head tail

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(3) ustawiamy wskaźnik next węzła wskazywanego przez pred (lub wskaźnik head gdy pred jest pusty) na adres zapisany w succ, a wskaźnik prev węzła wskazywanego przez succ (lub wskaźnik tail gdy succ jest pusty) na adres zapisany w pred

killer

(16)

1616/20/20 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Usuwanie Usuwanie

A next

B next

C

head tail

prev prev

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(3) ustawiamy wskaźnik next węzła wskazywanego przez pred (lub wskaźnik head gdy pred jest pusty) na adres zapisany w succ, a wskaźnik prev węzła wskazywanego przez succ (lub wskaźnik tail gdy succ jest pusty) na adres zapisany w pred

killer

(17)

Usuwanie Usuwanie

head tail

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(3) ustawiamy wskaźnik next węzła wskazywanego przez pred (lub wskaźnik head gdy pred jest pusty) na adres zapisany w succ, a wskaźnik prev węzła wskazywanego przez succ (lub wskaźnik tail gdy succ jest pusty) na adres zapisany w pred

(4) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer)

killer

(18)

1818/20/20 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Usuwanie Usuwanie

A next

C

head tail

prev

pred succ

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(3) ustawiamy wskaźnik next węzła wskazywanego przez pred (lub wskaźnik head gdy pred jest pusty) na adres zapisany w succ, a wskaźnik prev węzła wskazywanego przez succ (lub wskaźnik tail gdy succ jest pusty) na adres zapisany w pred

(4) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer)

killer

(19)

Usuwanie Usuwanie

head tail

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(3) ustawiamy wskaźnik next węzła wskazywanego przez pred (lub wskaźnik head gdy pred jest pusty) na adres zapisany w succ, a wskaźnik prev węzła wskazywanego przez succ (lub wskaźnik tail gdy succ jest pusty) na adres zapisany w pred

(4) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer)

(20)

2020/20/20 Programowanie I struktury danych, dr Piotr Cybula, Uniwersytet ŁódzkiProgramowanie I struktury danych, dr Piotr Cybula, Uniwersytet Łódzki

Usuwanie Usuwanie

A next

C

head tail

prev

(1) ustawiamy wskaźnik pred na węźle poprzedzającym usuwany, a succ na węźle do usunięcia (jeżeli nie ma szukanego węzła zgłaszamy wyjątek lub przerywamy operację)

(2) ustawiamy dedykowany wskaźnik (killer) na węzeł wskazywany przez succ i przestawiamy wskaźnik succ na węzeł następny

(3) ustawiamy wskaźnik next węzła wskazywanego przez pred (lub wskaźnik head gdy pred jest pusty) na adres zapisany w succ, a wskaźnik prev węzła wskazywanego przez succ (lub wskaźnik tail gdy succ jest pusty) na adres zapisany w pred

(4) zwalniamy węzeł wskazywany przez wskaźnik dedykowany (killer)

Cytaty

Powiązane dokumenty

(1) powołujemy dwa pomocnicze wskaźniki: pred ustawiamy na pusty adres, a succ na adres pierwszego węzła (head) i przechodzimy nimi w kierunku końca listy tak, aby wskaźnik pred

(2) za pomocą pary pomocniczych wskaźników pred i succ wybieramy węzeł do przeniesienia i przenosimy go do listy tymczasowej za pomocą wskaźnika mover (aktulizując wskaźniki head

● szablony pozwalają na wielokrotne wykorzystanie istniejącego kodu źródłowego struktury danych dla wielu wersji tej struktury z tym samym interfejsem, ale różnymi typami

● strumienie wejścia/wyjścia: iostream, fstream, sstream, iomanip. ●

Marek Cała – Katedra Geomechaniki, Budownictwa i Geotechniki Ściśliwość gruntu opisuje się zależnością porowatości od naprężenia..

Zasadniczym elementem programu są funkcje pole1, pole2 i pole3 - wszystkie funkcje mają jedno podstawowe zadanie - liczą powierzchnię prostokąta, którego jeden bok ma

Wszystkie urządzenia nowej seria SLIM-DUAL-PET zostały wyposażone w zaawansowany algorytm detekcji ruchu nowej generacji.. Zapewniają wykrywanie intruzów w obrębie

Każda linia w tych plikach zawiera dane pojedynczego studenta rozdzielone pojedynczymi spacjami w następującej kolejności: nazwisko, imię (imiona), numer indeksu