ALG4

ALG4



124 Rozdział 5. Struktury danych

Co jednak z dołączaniem elementów do listy? Poniżej są omówione dwie wersje odpowiedniej funkcji: pierwsza wstawia na koniec listy , druga na A:-tą jej pozycję. Oczywiście w przypadku tej drugiej funkcji niezbędne jest dokonanie odpowiedniego przesunięcia zawartości tablicy, podobnie jak w metodzie U.sunF.lenienl:

void ListaTab::WstawElement!int x)

I

// wstawiamy element x na koniec listy if(tab[0]<MaxTab-l) tab[++tab[0]]=x;

I

void ListaTab::WstawElementiint x, int k)

(//wstawiamy element x na k-ta pozycję listy: if((k>=l) &S (k<=tab[0]+1) 4& (tab(01<MaxTab-l))

{

for(int i=tab[01;i>=k;i —)

tab[i+1]-tab[i];// robimy miejsce tab (kj =x; tab(0]++;

)

)

Zasady posługiwania się takąpseudolistą sąjuż po stworzeniu wszystkich metod identyczne z „prawdziwą” listą jednokierunkową, dlatego też darujemy sobie cytowanie funkcji main.

Możliwe jest oczywiście takie zdefiniowanie klasy ListaTab, aby dołączanie elementów następowało już w porządku malejącym, rosnącym, czy też wedle jakiegoś innego klucza - Czytelnik może odpowiednio rozbudować funkcje i metody w ramach nieskomplikowanego ćwiczenia.

5.2.2.Metoda tablic równoległych

W poprzednio poznanej implementacji list przy pomocy zwykłej tablicy przypisaliśmy na sztywno /-temu elementowi tablicy i-ty element listy. W prostych zastosowaniach może to wystarczyć w zupełności, jednak rozwiązanie takie o wiele bardziej jest zbliżone ideowo do tablicy niż do listy. „Prawdziwa” lista powinna umożliwiać dość dowolne układanie elementów i sortowanie ich przy użyciu tylko i wyłącznie wskaźników. Chcieliśmy jednak od wskaźników, przydziałów pamięci, procedur new i delele uciec jak najdalej! Czyżby ich użycie było nieuchronne?

Odpowiedź na szczęście brzmi NIE! Wszystko można w końcu zasymulować, więc czemu nie wskaźniki?! Popularna metoda polega na zadeklarowaniu tablicy rekordów składających się z pola informacyjnego info i pola typu całkowitego następny, które służy do odszukiwania elementu „następnego” na liście. Dobrze znane i klasyczne wręcz rozwiązanie. Idea jest przedstawiona na rysunku


Wyszukiwarka

Podobne podstrony:
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędną
ALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacji
ALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I Różnica
ALG4 144 Rozdział 5. Struktury danych studia dotyczące drzew można znaleźć w zasadzie w większości
ALG4 154 Rozdział 5. Struktury danych weźmy pod uwagę następującą grupę słów: KROKUS, KROSNO, KRAWI
ALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunk
ALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, co
ALG4 134 Rozdział 5. Struktury danyct Jak to zwykle bywa, możliwych implementacji kolejek jest co n
ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metod
ALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(l
ALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz p
ALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listy
ALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czy
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
ALG0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O);    II element nie
Alg0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O);    II element nie
ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika za
ALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2
ALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup inst

więcej podobnych podstron