Operacje na strukturach listowych

Slides:



Advertisements
Podobne prezentacje
PRAM.
Advertisements

STRUKTURY DANYCH.
Sortowanie przez scalanie
Zaawansowane techniki algorytmiczne
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
ALGORYTMY GRAFOWE.
Dynamiczne struktury danych Listy, Kolejki, Stosy
Grażyna Mirkowska PJWSTK 15 listopad 2000
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
typy całkowite (całkowitoliczbowe)
Semafory Autorzy : Michał Winciorek Łukasz Jackowicz.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
pseudokody algorytmów
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Kurs Pascala – spis treści
Model danych oparty na listach
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Ogólne jednostki programowe 1
Dynamiczne struktury danych 1
Pliki. Pliki Pliki jako pamięć nieulotna Pliki jako pamięć nieulotna Nazwy, atrybuty i prawa dostępu Nazwy, atrybuty i prawa dostępu atrybuty atrybuty.
Typy wskaźnikowe, dynamiczne struktury danych
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
Algorytm Naiwny Ciąg znaków: A B D C E Wzorzec: A B.
Algorytmy i struktury danych
Podstawy programowania II
Programowanie strukturalne i obiektowe
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Algorytmy i struktury danych
Procedury i funkcje.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Listy, stosy i kolejki..
Złożone typy danych Listy Tworzenie elastycznych baz danych
Rodzaje, przechodzenie grafu
ALGORYTM. SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE
Tworzenie programów, etapów oraz określanie wymagań etapowych
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Programowanie strukturalne i obiektowe
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
C# Platforma .NET CZ.3 Kuba Ostrowski.
Tworzenie komiksu MS PowerPoint Beata Sanakiewicz.
Informatyka PDF Wykład 12.
Dynamiczne struktury danych
Ogólna struktura programu w TP
Języki formalne i gramatyki Copyright, 2005 © Jerzy R. Nawrocki Teoretyczne podstawy.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 04 k-ty co do wielkości. Stosy Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.
Algorytmy i Struktury Danych Struktury Danych
Zbiory dynamiczne.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
ALGORYTMY I STRUKTURY DANYCH
Temat: Tworzenie bazy danych
Indeksy drzewiaste. ISAM ISAM - INDEXED SEQUENTIAL ACCESS METHOD Problem: –Dany jest plik uporządkowany – w jaki sposób zrealizować efektywnie zapytanie.
Rozpatrzmy następujące zadanie programowania liniowego:
Typy wyliczeniowe, kolekcje
Listy.
Programowanie Obiektowe – Wykład 5
Wskaźniki Elżbieta Labocha.
ALGORYTMY I STRUKTURY DANYCH
Haskell Składnia funkcji.
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Operacje na strukturach listowych Lista Kolejka Stos Uruchom program dydaktyczny

LISTA JEDNOKIERUNKOWA MENU LISTA JEDNOKIERUNKOWA Przykładowa lista LISTA DWUKIERUNKOWA LISTA CYKLICZNA Wstawianie elementu: na początek listy do wnętrza listy na koniec listy Usuwanie elementu: z początku listy z wnętrza listy Z końca listy

Przykładowa lista jednokierunkowa MENU Wskaźnik do następnego elementu Wskaźnik do pierwszego elementu Next Dane / Kasia Ola Beata First Pole z danymi użytkowymi type pElement = ^tElement; tElement = record Next : pElement; Dane : string; end; var First : pElement; Powyższy kod przedstawia implementację wskaźnikową ,strukturę elementu listy. Pole z danymi użytkowymi może zawierać cokolwiek: liczbę, znak, rekord. W prezentowanym przykładzie jest to łańcuch.

Wstawianie elementu na początek listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; W prezentowanym przykładzie parametr wartość = ‘Asia’. Nacisnij spacje lub kliknij aby kontynuować.

Wstawianie elementu na początek listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu

Wstawianie elementu na początek listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik NEXT nowego elementu przyjmuje wartość wskaźnika FIRST, czyli wskazuje na pierwszy element listy.

Wstawianie elementu na początek listy MENU Wskaźnik do następnego elementu NewOne Next Dane Asia Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Pole z danymi użytkowymi nowego elementu przyjmuje wartość przekazaną przez parametr wartość, w tym przypadku jest to łańcuch ‘ Asia ‘.

Wstawianie elementu na początek listy MENU Wskaźnik do następnego elementu NewOne Next Dane Asia Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik FIRST przyjmuje wartość wskaźnika NEWONE , czyli nowy element staje się pierwszym elementem w liście.

Wstawianie elementu na początek listy MENU Wskaźnik do następnego elementu NewOne Next Dane Asia Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure DodajNaPoczatek (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik FIRST przyjmuje wartość wskaźnika NEWONE , czyli nowy element staje się pierwszym elementem w liście.

Wstawianie elementu do wnętrza listy Dodaj za element o podanej watrości Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; W prezentowanym przykładzie parametr szukana = ‘Beata’, natomiast nowa = ‘Aga’. Wskaźnik TEMP potrzebny jest do odnalezienia szukanego elementu.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Zaczynamy przeglądać liste - wskaźnik TEMP wskazuje na pierwszy element.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Przechodzimy do kolejnych elementów listy, aż znajdziemy szukany element. W tym przykładzie jest to łańcuch = ‘Beata’.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Nowy element przyjmuje wartość elementu wyznaczonego przez wskaźnik TEMP. Zarówno wskaźnik do następnego elementu, jak i pole z danymi (łańcuch =‘Beata’).

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / First Kasia Ola Aga Beata Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Pole z dana elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość parametru NOWA W tym przypadku łańcuch=‘Aga’.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / First Kasia Ola Aga Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Natomiast wskaźnik NEXT elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość wskaźnika NEWONE.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Przed element o podanej watrości NewOne Next Dane Beata Pole z danymi użytkowymi / First Kasia Ola Aga Ania Temp procedure DodajPrzedWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^ := temp^; temp^.dane := nowa; temp^.next := newOne; end; Takim sposobem wstawiliśmy nowy element przed element o podanej wartości. W rzeczywistości operacja ta polegała na wstawieniu za szukany element i zamienieniu kolejności tych dwóch elementów.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; W prezentowanym przykładzie parametr szukana = ‘Beata’, natomiast nowa = ‘Marta’. Wskaźnik TEMP potrzebny jest do odnalezienia szukanego elementu.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; Zaczynamy przeglądać liste - wskaźnik TEMP wskazuje na pierwszy element.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; Przechodzimy do kolejnych elementów listy, aż znajdziemy szukany element. W tym przykładzie jest to łańcuch = ‘Beata’.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; Wskaźnik NEXT nowego elementu przyjmuje wartość wskaźnika NEXT elementu wyznaczonego przez wskaźnik TEMP.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Marta Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; Dana nowego elementu przyjmuje wartość parametru nowa (łańcuch =‘Marta’)

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Marta Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end; Natomiast wskaźnik NEXT elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość wskaźnika NEWONE.

Wstawianie elementu do wnętrza listy MENU Wskaźnik do następnego elementu Za element o podanej watrości NewOne Next Dane Marta Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajZaWartosc (szukana,nowa : string); var newOne,temp : pElement; begin temp := first; while(temp^.next <> nil) and (temp^.dane <> szukana) do temp := temp^.next; if temp^.dane = szukana then New(newOne); newOne^.next := temp^.next; newOne^.dane := nowa; temp^.next := newOne; end;

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; W prezentowanym przykładzie parametr wartość = ‘Zosia’.

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; Za pomocą procedury NEW przydzielamy miejsce w pamięci dla nowego elementu.

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; Zaczynamy przeglądać liste - wskaźnik TEMP wskazuje na pierwszy element.

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; Przechodzimy do kolejnych elementów listy, aż znajdziemy ostatni element listy.

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next Dane Zosia Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; Dana nowego elementu przyjmuje wartość parametru nowa (łańcuch =‘Zosia’)

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next / Dane Zosia Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; Wskaźnik NEXT elementu przyjmuje wartość NIL ( puste wskazanie )

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next / Dane Zosia Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end; Natomiast wskaźnik NEXT elementu wyznaczonego przez wskaźnik TEMP przyjmuje wartość wskaźnika NEWONE.

Wstawianie elementu na koniec listy MENU Wskaźnik do następnego elementu NewOne Next / Dane Zosia Pole z danymi użytkowymi First Kasia Ola Beata Ania Temp procedure DodajNaKoniec (wartosc : string); var newOne,temp : pElement; begin if first = nil then DodajNaPoczatek(wartosc) else new(newOne); temp := first; while temp^.next <> nil do temp := temp^.next; newOne^.dane := wartosc; newOne^.next := temp^.next; temp^.next := newOne; end;

Usuwanie elementu z początku listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then toDel := first; first := first^.next; dispose(toDel); end;

Usuwanie elementu z początku listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then toDel := first; first := first^.next; dispose(toDel); end; Wskaźnik TODEL przyjmuje wartość wskaźnika FIRST czyli wskazuje na pierwszy element listy

Usuwanie elementu z początku listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then toDel := first; first := first^.next; dispose(toDel); end; Pierwszym elementem listy staje się dotychczas drugi element s

Usuwanie elementu z początku listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / Kasia Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then toDel := first; first := first^.next; dispose(toDel); end; Element, który był pierwszy zostaje zwolniony z pamięci (usunięty)

Usuwanie elementu z początku listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / Ola Beata Ania First procedure UsunPoczatek; var toDel : pElement; begin if first <> nil then toDel := first; first := first^.next; dispose(toDel); end;

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); W prezentowanym przykładzie parametr wartosc = ‘Ola’

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); Wskaźnik TODEL wskazuje na pierwszy element listy.

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); Wskaźnik TEMP wskazuje na pierwszy element listy.

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); Wskaźnik TODEL wskazuje na kolejny element listy.

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); Wskaźnik NEXT elementu wyznaczonego przez TEMP wskazuje na kolejny element po szukanym.

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); Element wyznaczony przez wskaźnik TODEL zostaje zwolniony z pamięci (usunięty)

Usuwanie elementu z wnętrza listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Beata Ania Temp procedure UsunWartosc (wartosc : string); var toDel,temp : pElement; begin toDel := first; if first^.dane = wartosc then first := first^.next else while(toDel^.next <> nil) and (toDel^.dane <> wartosc)do temp := toDel; toDel := toDel^.next; end; if toDel^.dane = wartosc then temp^.next := toDel^.next; dispose(toDel); Element wyznaczony przez wskaźnik TODEL zostaje zwolniony z pamięci (usunięty)

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel);

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TODEL wskazuje na pierwszy element listy.

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TEMP wskazuje element wskazywany przez wskaźnik TODEL.

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TODEL wskazuje na kolejny element listy.

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TEMP wskazuje element wskazywany przez wskaźnik TODEL

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TODEL wskazuje na kolejny element listy.

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TEMP wskazuje element wskazywany przez wskaźnik TODEL

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik TODEL wskazuje na ostatni element listy.

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Wskaźnik NEXT przedostatniego elementu listy wskazuje na NIL (staje się więc ostatnim elementem)

Usuwanie elementu z końca listy MENU Wskaźnik do następnego elementu Next ToDel Dane Pole z danymi użytkowymi / / First Kasia Ola Beata Ania Temp procedure UsunKoniec; var toDel,temp : pElement; begin toDel := first; if first^.next = nil then first := nil else begin while toDel^.next <> nil do temp := toDel; toDel := toDel^.next; end; temp^.next := nil; dispose(toDel); Dotychczas ostatni element listy zostaje zwolniony z pamięci.

Przykładowa lista dwukierunkowa MENU Wskaźnik do następnego elementu Wskaźnik do pierwszego elementu Next Dane Pole z danymi użytkowymi First / Prev Kasia Ola Beata / Wskaźnik do poprzedniego elementu type pElement = ^tElement; tElement = record Next : pElement; Dane : string; Prev : pElement; end; var First : pElement; Powyższy kod przedstawia implementację wskaźnikową ,strukturę elementu listy dwukierunkowej. Operacje dodawania i usuwania elementów są analogiczne do listy jednokierunkowej z tym że należy uwzględnić również wskaźnik do poprzedniego elementu ( Prev ).

Przykładowa lista cykliczna MENU Wskaźnik do następnego elementu Wskaźnik do pierwszego elementu Next Dane Kasia Ola Beata First Pole z danymi użytkowymi type pElement = ^tElement; tElement = record Next : pElement; Dane : string; end; var First : pElement; Powyższy kod przedstawia implementację wskaźnikową oraz strukturę elementu listy cyklicznej.

Kolejka . . . Struktura FIFO - First In First Out początek koniec MENU Struktura FIFO - First In First Out początek koniec Obsłużenie (ZKolejki) Dołączenie (DoKolejki) . . . Wyjście Wejście Kolejka - struktura danych (znaczeniowo odpowiadająca nazwie), której elementy są uporządkowane zgodnie z kolejnością ich napływania. Dane dokładane są na koniec kolejki, a pobierane z jej początku. Algorytm umieszczania oraz usuwania elementów z kolejki określa się skrótem FIFO (first-in-first-out czyli pierwszy na wejściu – pierwszy na wyjściu)

Zrealizowana na liście jednokierunkowej Przykładowa kolejka MENU Zrealizowana na liście jednokierunkowej First Last Wskaźnik do ostatniego elementu Wskaźnik do pierwszego elementu / Kasia Ola Beata Ania Wyjście Wejście type pElement = ^tElement; tElement = record Next : pElement; Dane : string; end; var First, Last : pElement; Powyższy kod przedstawia implementację wskaźnikową oraz strukturę elementu kolejki.

Dodawanie nowego elementu do kolejki MENU First Last NewOne / Kasia Ola Beata Ania Wyjście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; W prezentowanym przykładzie zmienna wartość = ‘Asia’.

Dodawanie nowego elementu do kolejki MENU First Last NewOne / Kasia Ola Beata Ania Wyjście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; Za pomocą procedury New przydzielamy miejsce w pamięci dla nowego elementu.

Dodawanie nowego elementu do kolejki MENU First Last NewOne / / Kasia Ola Beata Ania Wyjście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; Wskaźnik NEXT nowego elementu przyjmuje NIL .

Dodawanie nowego elementu do kolejki MENU First Last NewOne / / Kasia Ola Beata Ania Asia Wyjście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; Pole z danymi użytkowymi nowego elementu przyjmuje łańcuch ‘Asia’ .

Dodawanie nowego elementu do kolejki MENU First Last NewOne / / Kasia Ola Beata Ania Asia Wyjście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; Wskaźnik NEXT ostatniego elementu wskazuje na nowy element.

Dodawanie nowego elementu do kolejki MENU First Last NewOne / Kasia Ola Beata Ania Asia Wyjście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; Nowy element staje się ostatnim.

Dodawanie nowego elementu do kolejki MENU First Last NewOne / / Kasia Ola Beata Ania Asia Asia Wyjście Wejście Wejście procedure DoKolejki (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := nil; newOne^.dane := wartosc; if first <> nil then last^.next := newOne else first := newOne; last := newOne; end; Nowy element staje się ostatnim.

Usuwanie elementu z kolejki MENU ToDel First Last / Kasia Ola Beata Ania Wyjście Wejście procedure ZKolejki; var toDel : pElement; begin if first<>nil then toDel := first; first := first^.next; dispose(toDel); end;

Usuwanie elementu z kolejki MENU ToDel First Last / Kasia Ola Beata Ania Wyjście Wejście procedure ZKolejki; var toDel : pElement; begin if first<>nil then toDel := first; first := first^.next; dispose(toDel); end; Wskaźnik ToDel wskazuje na pierwszy element.

Usuwanie elementu z kolejki MENU ToDel First Last / Kasia Ola Beata Ania Wyjście Wejście procedure ZKolejki; var toDel : pElement; begin if first<>nil then toDel := first; first := first^.next; dispose(toDel); end; Dotychczasowy drugi element staje się pierwszym.

Usuwanie elementu z kolejki MENU ToDel First Last / Kasia Ola Beata Ania Wyjście Wejście procedure ZKolejki; var toDel : pElement; begin if first<>nil then toDel := first; first := first^.next; dispose(toDel); end; Element wyznaczony przez ToDel zostaje usunięty.

Usuwanie elementu z kolejki MENU ToDel First Last / Ola Beata Ania Wyjście Wejście procedure ZKolejki; var toDel : pElement; begin if first<>nil then toDel := first; first := first^.next; dispose(toDel); end;

Stos . . . Struktura LIFO - Last In First Out Położenie Zdjęcie MENU Struktura LIFO - Last In First Out Położenie (Push) Zdjęcie (Pop) Wejście Wyjście wierzchołek . . . Stos - liniowa struktura danych, znaczeniowo odpowiadająca nazwie. Dane dokładane są na wierzchołek stosu, również z wierzchołka są zdejmowane. Elementy poniżej wierzchołka można wyłącznie obejrzeć, aby je zdjąć , trzeba najpierw po kolei zdejmować to, co jest nad nimi. Algorytm umieszczania elementów w stosie oraz ich zdejmowania określa się skrótem LIFO (last-in-first-out czyli ostatni na wejściu – pierwszy na wyjściu)

Zrealizowany na liście jednokierunkowej Przykładowy stos MENU Wskaźnik do następnego elementu Zrealizowany na liście jednokierunkowej Wskaźnik do wierzchołka stosu First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Kasia Ola Beata Ania Wejście (Push) type pElement = ^tElement; tElement = record Next : pElement; Dane : string; end; var First : pElement; Powyższy kod przedstawia implementację wskaźnikową stosu.

Dodawanie elementu na stos MENU Wskaźnik do następnego elementu NewOne First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Kasia Ola Beata Ania Wejście (Push) procedure Push (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end;

Dodawanie elementu na stos MENU Wskaźnik do następnego elementu NewOne First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Kasia Ola Beata Ania Wejście (Push) procedure Push (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Przydzielamy pamięć dla nowego elementu.

Dodawanie elementu na stos MENU Wskaźnik do następnego elementu NewOne First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Kasia Ola Beata Ania Wejście (Push) procedure Push (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Wskaźnik next nowego elementu wskazuje na pierwszy element.

Dodawanie elementu na stos MENU Wskaźnik do następnego elementu NewOne First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Push (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Pole z danymi użytkowymi pierwszego elementu przyjmuje łańcuch ‘Ewa’ (parametr wartość).

Dodawanie elementu na stos MENU Wskaźnik do następnego elementu NewOne First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Push (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end; Nowy element staje się pierwszym.

Dodawanie elementu na stos MENU Wskaźnik do następnego elementu NewOne First Next Dane Pole z danymi użytkowymi Wyjście (Pop) Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) Wejście (Push) procedure Push (wartosc : string); var newOne : pElement; begin New(newOne); newOne^.next := first; newOne^.dane := wartosc; first := newOne; end;

Usuwanie elementu ze stosu MENU Wskaźnik do następnego elementu ToDel First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Pop (var wartosc : string); var toDel : pElement; begin toDel := first; wartosc := first^.dane; first := first^.next; Dispose(toDel); end;

Usuwanie elementu ze stosu MENU Wskaźnik do następnego elementu ToDel First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Pop (var wartosc : string); var toDel : pElement; begin toDel := first; wartosc := first^.dane; first := first^.next; Dispose(toDel); end; Wskaźnik ToDel wskazuje na pierwszy element.

Usuwanie elementu ze stosu MENU Wskaźnik do następnego elementu ToDel First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Pop (var wartosc : string); var toDel : pElement; begin toDel := first; wartosc := first^.dane; first := first^.next; Dispose(toDel); end; Pole z danymi użytkowymi pierwszego elementu zostaje przekazane parametrowi wartość.

Usuwanie elementu ze stosu MENU Wskaźnik do następnego elementu ToDel First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Pop (var wartosc : string); var toDel : pElement; begin toDel := first; wartosc := first^.dane; first := first^.next; Dispose(toDel); end; Pierwszym elementem staje się dotychczasowy drugi element.

Usuwanie elementu ze stosu MENU Wskaźnik do następnego elementu ToDel First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Ewa Kasia Ola Beata Ania Wejście (Push) procedure Pop (var wartosc : string); var toDel : pElement; begin toDel := first; wartosc := first^.dane; first := first^.next; Dispose(toDel); end; Element wyznaczony przez ToDel zostaje usunięty.

Usuwanie elementu ze stosu MENU Wskaźnik do następnego elementu ToDel First Next Dane Pole z danymi użytkowymi Wyjście (Pop) / Kasia Ola Beata Ania Wejście (Push) procedure Pop (var wartosc : string); var toDel : pElement; begin toDel := first; wartosc := first^.dane; first := first^.next; Dispose(toDel); end;