Programowanie i struktury danych 1 / 44



Podobne dokumenty
Listy i operacje pytania

Kurs II, zajęcia 1. Tomasz Kulczyński, Błażej Osiński, Wojciech Śmietanka. Stos, kolejka i lista. Stos. Kolejka. Lista dwukierunkowa

Dynamiczne struktury danych

Przetwarzanie sygnaªów

Struktury danych: stos, kolejka, lista, drzewo

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Listy, kolejki, stosy

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Zestaw 1 ZESTAWY A. a 1 a 2 + a 3 ± a n, gdzie skªadnik a n jest odejmowany, gdy n jest liczb parzyst oraz dodawany w przeciwnym.

Struktury danych (I): kolejka, stos itp.

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Rekurencyjne struktury danych

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Programowanie obiektowe

Podstawy informatyki 2

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. (c) Marcin Sydow. Wst p. Linked Lists. Abstrakcyjne Struktury Danych. Podsumowanie. Stos, Kolejka

E S - uniwersum struktury stosu

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Wstęp do programowania

Metodydowodzenia twierdzeń

Podstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Dynamiczne struktury danych

1. Wprowadzenie do C/C++


dr inż. Paweł Myszkowski Wykład nr 11 ( )

1 Metody iteracyjne rozwi zywania równania f(x)=0

Stos LIFO Last In First Out

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Programowanie wspóªbie»ne

Marcin Matusiak i Łukasz Stasiak

Struktury dynamiczne

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

1 Stos: Stack i Stack<T>

Temat: Dynamiczne liniowe struktury danych - stos, kolejka, lista. 1. Wady i zalety struktury tablicy

Ÿ1 Oznaczenia, poj cia wst pne

Programowanie i struktury danych

Wielomiany. El»bieta Sadowska-Owczorz. 19 listopada 2018

1. Odcienie szaro±ci. Materiaªy na wiczenia z Wprowadzenia do graki maszynowej dla kierunku Informatyka, rok III, sem. 5, rok akadem.

Wykład 4. Klasa List Kolejki Stosy Słowniki

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra

KOLEJKA (QUEUE) (lista fifo first in, first out)

Podstawowe algorytmy grafowe i ich zastosowania

Elementy Modelowania Matematycznego Wykªad 9 Systemy kolejkowe

Podstawowe struktury danych

Struktury Danych i Złożoność Obliczeniowa

Wstęp do programowania. Stosy i kolejki. Piotr Chrząstowski-Wachtel

Programowanie wspóªbie»ne

WSTĘP DO INFORMATYKI. Struktury liniowe

Struktury. Przykład W8_1

Algorytmy i Struktury Danych.

Lab. 02: Algorytm Schrage

2 Liczby rzeczywiste - cz. 2

1. Wprowadzenie do C/C++

Wstęp do programowania

Lista, Stos, Kolejka, Tablica Asocjacyjna

Podstawowe algorytmy grafowe i ich zastosowania

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

Ekonometria. wiczenia 13 Metoda ±cie»ki krytycznej. Andrzej Torój. Instytut Ekonometrii Zakªad Ekonometrii Stosowanej

Lekcja 5 Programowanie - Nowicjusz

Algorytmy i struktury danych (7, 8)

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

Ukªady równa«liniowych

Podstawy JavaScript. Dawid Poªap. Dawid Poªap Technologia informacyjna Grudzie«, / 13

Algorytmy i Struktury Danych.

Granular Computing 9999 pages 15 METODY SZTUCZNEJ INTELIGENCJI - PROJEKTY

W ramach zadania należy wykorzystać funkcje wirtualne. W programach testujących należy wykorzystać klasy stworzone w ramach pierwszego zadania.

Podstawy Programowania. Listy i stosy

x y x y x y x + y x y

c Marcin Sydow Przepªywy Grafy i Zastosowania Podsumowanie 12: Przepªywy w sieciach

1. Kalkulator czterech działań. 2. Konwersja ciągu znaków do tablicy.

Liniowe równania ró»niczkowe n tego rz du o staªych wspóªczynnikach

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Teoretyczne podstawy informatyki

Rachunek zda«. Relacje. 2018/2019

Metody dowodzenia twierdze«

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

Listy Inne przykªady Rozwi zywanie problemów. Listy w Mathematice. Marcin Karcz. Wydziaª Matematyki, Fizyki i Informatyki.

Zbiory ograniczone i kresy zbiorów

Lista 5 Typy dynamiczne kolejka

CAŠKOWANIE METODAMI MONTE CARLO Janusz Adamowski

Lekcja 6 Programowanie - Zaawansowane

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Optymalizacja R dlaczego warto przesi ± si na Linuxa?

Podziaª pracy. Cz ± II. 1 Tablica sortuj ca. Rozwi zanie

Wykład 6. Dynamiczne struktury danych

Dokªadna arytmetyka liczb rzeczywistych w j zyku Python

hala sportowa MOS ul. Złotnicza 12 godzina 10.30

Transkrypt:

Programowanie i struktury danych 1 / 44

Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje na li±cie dwukierunkowej pozwalaj na wstawianie elementów z przodu, z tyªu i w ±rodku listy elementów. Najcz ±ciej elementy listy tworzymy u»ywaj c struktury struct elem { //dane przechowywane na li±cie elem* next; elem* prev; }; 2 / 44

Lista dwukierunkowa - ilustracja List dwukierunkow mo»na uto»samia z grup osób trzymaj cych si za r ce. Ka»da osoba trzyma swojego lewego i prawego s siada. W takiej strukturze mo»liwe jest dodawanie nowej osoby w dowolnym miejscu. Mo»liwe jest tak»e usuwanie osób z takiej listy. Nale»y wtedy pami ta,»eby po dodaniu/usuni ciu osoby skorygowa uchwyty dªoni. 3 / 44

Lista dwukierunkowa W li±cie wyró»niamy dwa w zªy head - gªowa - poczatek struct elem* head;... head->prev=null; tail - ogon - koniec struct elem* tail;... tail->next=null; 4 / 44

Stos Stos to liniowa struktura danych, do której dost p mo»liwy jest z jednego tylko ko«ca. Stos nazywany jest struktur LIFO - ostatni wchodzi, pierwszy wychodzi last in/rst out. 5 / 44

Operacje na stosie Wyró»niamy wierzchoªek stosu, czyli element, który umieszczony jest na szczycie - topstos Nowe elementy kªadzione s zawsze na szczyt stosu - push(element) W razie potrzeby pobieramy elementy ze szczytu stosu pop() 6 / 44

push(15) 7 / 44

push(15) 15 8 / 44

push(15) push(1) 15 9 / 44

push(15) push(1) 1 15 10 / 44

push(15) push(1) push(0) 1 15 11 / 44

push(15) push(1) push(0) 0 1 15 12 / 44

push(15) push(1) push(0) push(37) 0 1 15 13 / 44

push(15) push(1) push(0) push(37) 37 0 1 15 14 / 44

push(15) push(1) push(0) push(37) push(84) 37 0 1 15 15 / 44

push(15) push(1) push(0) push(37) push(84) 84 37 0 1 15 16 / 44

push(15) push(1) push(0) push(37) push(84) pop() 84 37 0 1 15 17 / 44

push(15) push(1) push(0) push(37) push(84) pop() 37 0 1 15 zdj to 84 18 / 44

push(15) push(1) push(0) push(37) push(84) pop() pop() 37 0 1 15 19 / 44

push(15) push(1) push(0) push(37) push(84) pop() pop() 0 1 15 zdj to 37 20 / 44

push(15) push(1) push(0) push(37) push(84) pop() pop() push(54) 0 1 15 21 / 44

push(15) push(1) push(0) push(37) push(84) pop() pop() push(54) 54 0 1 15 22 / 44

Stos Klasyczne implementacje stosu tablicowa listowa 23 / 44

Przykªad u»ycia stosu - sprawdzenie poprawno±ci u»ycia nawiasów 1: dopóki nie jet koniec wyra»enie, wczytaj znak ch 2: { 3: switch (ch) 4: { 5: case '{' : 6: case '[' : 7: case '(' : stos.push(ch) break 8: case '}' : 9: case ']' : 10: case ')' : 11: je»eli (! stos.isempty()) 12: { chx=stos.pop() 13: je»eli ((ch='}' ) i (chx!='{')) lub 14: ((ch=']' ) i (chx!='[')) lub 15: ((ch=')' ) i (chx!='(')) 16: bª d 17: }else 18: bª d 19: break 20: } 21: je»eli (! stos.isempty()) 22: return bª d nawiasu zamykaj cego 24 / 44

Kolejka Kolejka to liniowa struktura danych. Nowe elementy sa dodawane na ko«cu, natomiast przetwarzane s elementy z pocz tku kolejki. Kolejka jest struktur typu FIFO - pierwszy wchodzi, pierwszy wychodzi. rst in, rst out. 25 / 44

Operacje na kolejce rstel() - zwraca pierwszy element kolejki nie usuwaj c go enqueue(el) - wstawanie elementu el na koniec kolejki dequeue() - pobranie pierwszego elementu 26 / 44

enqueue(15) 27 / 44

enqueue(15) 15 28 / 44

enqueue(15) enqueue(1) 15 29 / 44

enqueue(15) enqueue(1) 1 15 30 / 44

enqueue(15) enqueue(1) enqueue(0) 1 15 31 / 44

enqueue(15) enqueue(1) enqueue(0) 0 1 15 32 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) 0 1 15 33 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) 37 0 1 15 34 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) 37 0 1 15 35 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) 84 37 0 1 15 36 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) dequeue() 84 37 0 1 15 37 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) dequeue() 84 37 0 1 15 38 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) dequeue() dequeue() 84 37 0 1 39 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) dequeue() dequeue() 84 37 0 40 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) dequeue() dequeue() enqueue(54) 84 37 0 41 / 44

enqueue(15) enqueue(1) enqueue(0) enqueue(37) enqueue(84) dequeue() dequeue() enqueue(54) 54 84 37 0 42 / 44

Zadania 1 Dla listy dwukierunkowej, przechowuj cej elementy okre±lonego typu (np. liczby caªkowite, zmiennoprzecinkowe itp.) wykonaj nast puj ce operacje: utwórz list n losowych elementów wybranego typu (gdzie n oraz zakres danych s parametrami), wy±wietl zawarto± listy od ko«ca, dodaj na pocz tek listy 2 dodatkowe elementy (ich warto±ci mo»na wprowadzi z klawiatury), wy±wietl ile elementów zawiera lista. 2 Dla stosu przechowuj cego elementy okre±lonego typu (np. liczby caªkowite, zmiennoprzecinkowe itp.) wykonaj nast puj ce operacje: umie± n losowych elementów na stosie (gdzie n oraz zakres danych s parametrami), wy±wietl element znajduj cy si na szczycie stosu, usu«element ze szczytu stosu (nale»y sprawdzi, czy na stosie znajduj si elementy), umie± element na szczycie stosu, ponownie wy±wietl element znajduj cy si na szczycie stosu, wy±wietl ilo± elementów znajduj cych si na stosie. 3 Dla kolejki przechowuj cej elementy okre±lonego typu (np. liczby caªkowite, zmiennoprzecinkowe itp.) wykonaj nast puj ce operacje: umie± n losowych elementów w kolejce (gdzie n oraz zakres danych s parametrami), wy±wietl element znajduj cy si na pocz tku kolejki, usu«pierwszy element z kolejki (nale»y sprawdzi, czy w kolejce znajduj si elementy), wy±wietl ilo± elementów znajduj cych si w kolejce oraz oblicz ich sum. 43 / 44

Dzi kuj za uwag!!! 44 / 44