Algorytmy i Struktury Danych.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Algorytmy i Struktury Danych."

Transkrypt

1 Algorytmy i Struktury Danych. Podstawowe struktury danych, cd. Wykład na podstawie ksiażki Roberta Sedgewicka i Kevina Wayne: Algorithms. Furth Edition. Princeton University dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 7 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 1 / 67

2 Parametryzowany stos o stałym rozmiarze I import java.util.nosuchelementexception; import java.util.scanner; import java.util.arrays; public class ArrayStack<Item> { private Item [] a; private int N; //Inicjalizacja pustego stosu. public ArrayStack(int size) { a = (Item[]) new Object[size]; // Zwraca true, gdy stos jest pusty public boolean isempty() { return N == 0 ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 2 / 67

3 Parametryzowany stos o stałym rozmiarze II //Zwraca liczbe elementow na stosie. public int size() { return N; // Dodaje element do stosu public void push(item item) { if (N >= a.length) throw new NoSuchElementException("Stos pelny"); a[n++] = item; //Usuwa element ze stosu public Item pop() { if (isempty()) throw new NoSuchElementException("Stos pusty"); Item item = a[--n]; // pozwala na zapobieganie wyciekom poamieci Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 3 / 67

4 Parametryzowany stos o stałym rozmiarze III a[n] = null; return item; //Zwraca szczyt stosu, ale go nie usuwa public Item peek() { if (isempty()) throw new NoSuchElementException("Stos pusty"); return a[n]; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 4 / 67

5 Uwagi dotyczace stosu o stałym rozmiarze Rozmiar stosu jest stały. Problem z nadmiarem, tj. zgłaszany jest wyjatek przy próbie dodania nowego element do pełnego stosu. Pytanie: czy implementacja tablicowa stosu może być bardziej elastyczna, tzn. czy można w efektywny sposób zwiększać i zmniejszać tablice. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 5 / 67

6 Rozwiazanie problemu nadmiaru I Jeśli tablica jest pełna, utwórz nowa tablicę o rozmiarze dwukrotnie większym i skopiuj elementy. public class ResizeArrayStack <Item > { private Item [ ] a = ( Item [ ] ) new Object [ 1 ] ; private i n t N = 0; / / l i c z b a elementow. / / Dodaje element do stosu public void push ( Item item ) { / Usuwamy wyjatek i f (N >= a. length ) throw new NoSuchElementException ( " Stos pelny " ) ; / i f (N == a. length ) r e s i z e (2 a. l e n g t h ) ; a [N++] = item ; / / metoda przenosi stos o rozmiarze N <= max / / do nowej t a b l i c y o rozmiarze max Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 6 / 67

7 Rozwiazanie problemu nadmiaru II private void r e s i z e ( i n t max) { Item [ ] temp = ( Item [ ] ) new Object [ max ] ; for ( i n t i = 0; i < N; i ++) temp [ i ] = a [ i ] ; a = temp ; Koszt wstawienie pierwszych N elementów: N + ( N) 3N. 1 dostęp k operacji podwojenia do tablicy na 1 push tablicy Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 7 / 67

8 Rozwiazanie problemu nadmiaru III $ java ResizeArrayStack 256 ( Zwieksza :1) ( Zwieksza :2) ( Zwieksza :4) ( Zwieksza :8) ( Zwieksza :16) ( Zwieksza :32) ( Zwieksza :64) ( Zwieksza :128) Wykonanie dla $ java ResizeArrayStack 12 pokazujace Ilość elementów na stosie (N), jego rozmiar i zawartość. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 8 / 67

9 Rozwiazanie problemu nadmiaru IV Rozmiar push() N stosu Zawartość stos 0 1 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 9 / 67

10 Rozwiazanie problemu nadmiaru pustego miejsca I Jeśli tablica jest w 1/4 pełna, zmniejsz tablicę o połowę. public Item pop ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Stos pusty " ) ; Item item = a[ N ] ; a [N] = null ; / / pozwala na zapobieganie wyciekom poamieci i f (N > 0 && N == a. l e n g t h / 4 ) r e s i z e ( a. length / 2 ) ; return item ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 10 / 67

11 Ślad zmiany rozmiaru tablicy a. Stos push pop N length null wolne to 1 1 to wolne be 2 2 to be wolne or 3 4 to be or null wolne not 4 4 to be or not wolne to 5 8 to be or not to null null null - to 4 8 to be or not null null null null be 5 8 to be or not be null null null - be 4 8 to be or not null null null null - not 3 8 to be or null null null null null that 4 8 to be or that null null null null - that 3 8 to be or null null null null null - or 2 4 to be null null wolne - be 1 2 to null wolne is 2 2 to is wolne Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 11 / 67

12 Stos o zmiennym rozmiarze - ResizeArrayStack.java I import java. u t i l. NoSuchElementException ; import java. u t i l. Scanner ; import java. u t i l. Arrays ; public class ResizeArrayStack <Item > { private Item [ ] a = ( Item [ ] ) new Object [ 1 ] ; private i n t N = 0; public boolean isempty ( ) { return N == 0 ; public i n t size ( ) { return N; private void r e s i z e ( i n t max) { Item [ ] temp = ( Item [ ] ) new Object [ max ] ; for ( i n t i = 0; i < N; i ++) temp [ i ] = a [ i ] ; a = temp ; public void push ( Item item ) { i f (N == a. length ) r e s i z e (2 a. length ) ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 12 / 67

13 Stos o zmiennym rozmiarze - ResizeArrayStack.java II a [N++] = item ; public Item pop ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Stos pusty " ) ; Item item = a[ N ] ; a [N] = null ; i f (N > 0 && N == a. l e n g t h / 4 ) r e s i z e ( a. length / 2 ) ; return item ; public Item peek ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Stos pusty " ) ; return a [N ] ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 13 / 67

14 Implementacje stosu: tablicowa vs dynamiczna Implementacja dynamiczna (lista węzłów): Każda operacja wymaga stałego czasu, również w najgorszym przypadku. Wykorzystuje dodatkowy czas i pamięć na obsługę dowiazań. Tablicowa implementacja z tablica o zmiennym rozmiarze: Każda operacja wymaga stałego kosztu zamortyzowanego. 1 Mniej zmarnowanej pamięci. 1 Koszt zamortyzowany - miara złożoności obliczeniowej operacji na strukturze danych. Koszt zamortyzowany operacji jest średnim czasem wykonania przypadajacym na jedna operację w pesymistycznym ciagu operacji. Koszt zamortyzowany różni się od kosztu oczekiwanego tym, że bierze pod uwagę ciag operacji i nie jest metoda probabilistyczna Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 14 / 67

15 Parametryzowana kolejka o stałym rozmiarze I import java. u t i l. NoSuchElementException ; import java. u t i l. Scanner ; import java. u t i l. Arrays ; public class ArrayQueue <Item > { private Item [ ] a ; private i n t N; private i n t head ; private i n t t a i l ; public ArrayQueue ( i n t size ) { a = ( Item [ ] ) new Object [ size ] ; N=0; head = t a i l = 0; public boolean isempty ( ) { return N==0 ; public i n t size ( ) { return N; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 15 / 67

16 Parametryzowana kolejka o stałym rozmiarze II public void enqueue ( Item item ) { i f ( head == ( t a i l +1)%a. l e n g t h ) throw new NoSuchElementException ( " Kelejka pelna " ) ; a [ t a i l ++] = item ; i f ( t a i l == a. l e n g t h ) t a i l =0; N++; public Item dequeue ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Kolejka pusta " ) ; Item item = a [ head ] ; a [ head++]= null ; / / k o n t r o l a wycieku pamieci i f ( head == a. length ) head =0; N ; return item ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 16 / 67

17 Parametryzowana kolejka o stałym rozmiarze III public Item peek ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Kolejka pusta " ) ; return a [ head ] ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 17 / 67

18 Uwagi dotyczace kolejki o stałym rozmiarze Rozmiar kolejki jest stały. Problem z nadmiarem, tj. zgłaszany jest wyjatek przy próbie dodania nowego element do pełnej kolejki. Pytanie: czy implementacja tablicowa kolejki może być bardziej elastyczna, tzn. czy można w efektywny sposób zwiększać i zmniejszać tablice. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 18 / 67

19 Rozwiazanie problemu nadmiaru I Jeśli tablica jest pełna, utwórz nowa tablicę o rozmiarze dwukrotnie większym i skopiuj elementy. public class ResizeArrayQueue <Item > { private Item [ ] a ; private i n t N; / / rozmiar k o l e j k i private i n t head ; private i n t t a i l ; / / Dodaje element do k o l e j k i public void enqueue ( Item item ) { / i f ( head == ( t a i l +1)%a. l ength ) throw new NoSuchElementException ( " Kelejka pelna " ) ; / i f (N == a. length ) r e s i z e (2 a. l e n g th ) ; a [ t a i l ++] = item ; i f ( t a i l == a. l e n g t h ) t a i l =0; N++; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 19 / 67

20 Rozwiazanie problemu nadmiaru II / / metoda przenosi k o l e j k e o rozmiarze N <= max / / do nowej t a b l i c y o rozmiarze max private void r e s i z e ( i n t max) { a s sert max >= N; Item [ ] temp = ( Item [ ] ) new Object [ max ] ; for ( i n t i = 0; i < N; i ++) { temp [ i ] = a [ ( head + i ) % a. l ength ] ; a = temp ; head = 0; t a i l = N; Wykonanie dla $ java ResizeArrayQueue 12 pokazujace Ilość elementów w kolejce (N), jej rozmiar i zawartość. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 20 / 67

21 Rozwiazanie problemu nadmiaru III enque Rozmiar ue() N kolejki Zawartość kolejki 0 2 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 21 / 67

22 Rozwiazanie problemu nadmiaru pustego miejsca Jeśli tablica jest w 1/4 pełna, zmniejsz tablicę o połowę. public Item dequeue ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Kolejka pusta " ) ; Item item = a [ head ] ; a [ head++]= null ; / / k o n t r o l a wycieku pamieci N ; i f ( head == a. length ) head =0; i f (N > 0 && N == a. l e n g t h / 4 ) r e s i z e ( a. length / 2 ) ; return item ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 22 / 67

23 Ślad zmiany rozmiaru tablicy a. Kolejka enq deq N length null null wolne null wolne wolne null wolne wolne null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null wolne null wolne wolne Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 23 / 67

24 Implementacje kolejki: tablicowa vs dynamiczna Implementacja dynamiczna (lista węzłów): Każda operacja wymaga stałego czasu, również w najgorszym przypadku. Wykorzystuje dodatkowy czas i pamięć na obsługę dowiazań. Tablicowa implementacja z tablica o zmiennym rozmiarze: Każda operacja wymaga stałego kosztu zamortyzowanego. Mniej zmarnowanej pamięci. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 24 / 67

25 Parametryzowana kolejka o zmiennym rozmiarze I import java. u t i l. NoSuchElementException ; import java. u t i l. Scanner ; import java. u t i l. Arrays ; public class ResizeArrayQueue <Item > { private Item [ ] a ; private i n t N; private i n t head ; private i n t t a i l ; public ResizeArrayQueue ( ) { a = ( Item [ ] ) new Object [ 2 ] ; head = t a i l = 0; N=0; public boolean isempty ( ) { return N==0 ; public i n t size ( ) { return N; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 25 / 67

26 Parametryzowana kolejka o zmiennym rozmiarze II private void r e s i z e ( i n t c a p a c i t y ) { assert capacity >= N; Item [ ] temp = ( Item [ ] ) new Object [ c a p acity ] ; for ( i n t i = 0; i < N; i ++) { temp [ i ] = a [ ( head + i ) % a. l e ngth ] ; a = temp ; head = 0; t a i l = N; / / Dodaje element do k o l e j k i public void enqueue ( Item item ) { i f (N == a. l e n g t h ) r e s i z e (2 a. l e n gth ) ; a [ t a i l ++] = item ; N++; i f ( t a i l == a. l e n g t h ) t a i l =0; / / Usuwa element z k o l e j k i Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 26 / 67

27 Parametryzowana kolejka o zmiennym rozmiarze III public Item dequeue ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Kolejka pusta " ) ; Item item = a [ head ] ; a [ head++] = null ; N ; i f ( head == a. length ) head =0; i f (N > 0 && N == a. l e n g t h / 4 ) r e s i z e ( a. length / 2 ) ; return item ; / / Zwraca poczatek k o l e j k i, ale go nie usuwa public Item peek ( ) { i f ( isempty ( ) ) throw new NoSuchElementException ( " Kolejka pusta " ) ; return a [ head ] ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 27 / 67

28 Lista Lista - struktura danych, w których elementy sa ułożone w liniowym porzadku. Porzadek na liście określaja wskaźniki zwiazane z każdym elementem listy. Lista jedno- i dwukierunkowa - notacja wspólna head[l] - pierwszy element listy L. Jeżeli head[x]=nil to lista jest pusta. tail[l] - ostatni element listy L. key[x] - klucz znajdujacy się w węźle x. next[x] - następnik elementu x. Jeżeli next[x]=nil to x nie ma następnika, jest więc ostanim elementem listy (tzw. ogon). Lista dwukierunkowa - notacja dodatkowa prev[x] - poprzednik elementu x. Jeżeli prev[x]=nil to x nie ma poprzednika, jest więc pierwszym elementem listy (tzw. głowa). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 28 / 67

29 Lista jedno- i dwu kierunkowa - schemat Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 29 / 67

30 Podstawowe operacje na listach Dodawanie elementu do listy Wyszukiwanie elementu na liście Usuwanie elementu z listy Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 30 / 67

31 Dodawanie elementu do listy jednokierunkowej na poczatek Dane wejściowe: Położenie pierwszego elementu listy; Dodawany klucz; Algorytm: List-add-front(List L,Item item) 1: Utwórz nowy węzeł x; 2: key[x] := item; 3: next[x] := head[l]; 4: if head[l] = NULL then 5: head[l] := x; 6: tail[l] := x; 7: else 8: head[l] := x; 9: end if Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 31 / 67

32 Dodawanie elementu do listy jednokierunkowej na poczatek Złożoność Procedura List-add-front(List L,Item item) owy węzeł zawierajacy klucz item na poczatek listy jednokierunkowej. Procedura List-add-front na liście o n elementach działa w czasie O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 32 / 67

33 Dodawanie elementu do listy jednokierunkowej na koniec Dane wejściowe: Położenie ostatniego elementu na liście; Dodawany klucz; Algorytm: List-add-back(List L,Item item) 1: Utwórz nowy węzeł x; 2: key[x] := item; 3: next[x] := NULL; 4: if head[l] = NULL then 5: head[l] := x; 6: tail[l] := x; 7: else 8: next[tail[l]] := x; 9: tail[l] := x; 10: end if Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 33 / 67

34 Dodawanie elementu do listy jednokierunkowej na koniec Złożoność Procedura List-add-back(List L,Item item) dodaje nowy węzeł zawierajacy klucz item na koniec listy jednokierunkowej. Procedura List-add-back na liście o n elementach działa w czasie O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 34 / 67

35 Węzeł listy jednokierunkowej class Node<T> { private T data ; private Node<T> next ; public Node ( T data, Node<T> next ) { this. data = data ; this. next = next ; public void setdata ( T data ) { this. data = data ; public void setnext ( Node<T> next ) { this. next = next ; public T getdata ( ) { return data ; public Node<T> getnext ( ) { return next ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 35 / 67

36 Dodawanie elementu do listy na poczatek i na koniec I public class L i s t <T> implements I t e r a b l e <T> { private i n t n = 0; / / l i c z b a elementow l i s t y private Node<T> f i r s t ; / / poczatek l i s t y private Node<T> l a s t ; / / koniec l i s t y public L i s t ( ) { f i r s t = null ; l a s t = null ; public boolean isempty ( ) { return n == 0; public i n t size ( ) { return n ; public Node<T> gethead ( ) { return f i r s t ; public Node<T> g e t T a i l ( ) { return l a s t ; public void add_front ( T item ) { Node<T> p = new Node<T>( item, n u l l ) ; n++; i f ( f i r s t == null ) { f i r s t = l a s t = p ; else { p. setnext ( f i r s t ) ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 36 / 67

37 Dodawanie elementu do listy na poczatek i na koniec II f i r s t = p ; public void add_back ( T item ) { Node<T> p = new Node<T>( item, n u l l ) ; n++; i f ( f i r s t == null ) { f i r s t = l a s t = p ; else { l a s t. setnext ( p ) ; l a s t = p ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 37 / 67

38 Iterowanie I Cel: Dodać obsługę iteracji po elementach listy, bez ujawniania jej wewnętrznej reprezentacji. i N Ala ma kota a kot ma mysz null null null first current Ala ma kota a kot ma mysz Utwórz listę implementujac a interfejs import java.util.iterator. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 38 / 67

39 Iterowanie II Czym jest interfejs Iterable w Javie? Interfejs Iterable ma tylko jedna metodę o nazwie iterator(). Metoda iterator() musi zwrócić iterator, który może być użyty do iteracji elementów obiektu implementujacego interfejs Iterable. Definicja interfejsu Iterable: public interface I t e r a b l e <T> { public I t e r a t o r <T> i t e r a t o r ( ) ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 39 / 67

40 Iterowanie III Czym jest Iterator w Javie? Interfejs Iterator posiada metody hasnext() oraz next(). Metoda bool hasnext() sprawdza, czy istnieje następny element w pewnej kolekcji (liście). Metoda T next() zwraca element na ktury pokazuje iterator i przesuwa iterator do następnego elementu. Definicja interfejsu Iterator: public interface I t e r a t o r <T> { public boolean hasnext ( ) ; public T next ( ) ; public void remove ( ) ; / / mozna pominac Zobacz: implementing-iterable.html Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 40 / 67

41 Iterowanie IV import java. u t i l. I t e r a t o r ; public class L i s t <T> implements I t e r a b l e <T> { / /... zawrtosc klasy z poprzedniego s l a j d u / /... plus to co p o n i z e j public I t e r a t o r <T> i t e r a t o r ( ) { return new L i s t I t e r a t o r ( this ) ; private class L i s t I t e r a t o r implements I t e r a t o r <T> { private Node<T> c u r r e n t ; public L i s t I t e r a t o r ( L i s t <T> l i s t ) { c u r r e n t = l i s t. gethead ( ) ; public boolean hasnext ( ) { return c u r r e n t!= null ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 41 / 67

42 Iterowanie V public void remove ( ) { throw new UnsupportedOperationException ( ) ; public T next ( ) { i f (! hasnext ( ) ) throw new NoSuchElementException ( ) ; T item = c u r r e n t. getdata ( ) ; c u r r e n t = c u r r e n t. getnext ( ) ; return item ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 42 / 67

43 Iterowanie VI Dlaczego warto używać interfejsu Iterable? Dostajemy elegancki kod przy pomycy konstrukcji "foreach": public class L i s t <T> implements I t e r a b l e <T> {... public void show ( ) { I t e r a t o r <T> i = this. i t e r a t o r ( ) ; while ( i. hasnext ( ) ) System. out. p r i n t ( i. next ( ) + " " ) ; System. out. p r i n t l n ( ) ; public void show2 ( ) { for ( T item : this ) System. out. p r i n t ( item + " " ) ; System. out. p r i n t l n ( ) ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 43 / 67

44 Wyszukiwanie elementu na liście Algorytm wyszukiwania elementu w liście jednokierunkowej Cel: Wyszukanie elementu na liście; Dane wejściowe: Położenie pierwszego elementu listy; Kryterium poszukiwania, np. wartość danej elementarnej; Algorytm: List-Search(Lista L,klucz k) 1: x := head[l]; 2: while (x!= NULL and key[x]!= k) do 3: x := next[x]; 4: end while 5: return x; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 44 / 67

45 Wyszukiwanie elementu na liście Złożoność Procedura List-Search(L, k) wyznacza pierwszy element o kluczu k na liście L. Ponieważ niekiedy potrzebne jest przejście całej listy L, aby znaleźć element o kluczu k, to pesymistyczny czas działania procedury List-Search na liście o n elementach wynosi O(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 45 / 67

46 Implementacja metody w klasie List I public class L i s t <T> implements I t e r a b l e <T> {... public Node<T> search ( T k ) { Node<T> p = this. f i r s t ; while ( ( p!= null ) && ( p. getdata ( )!= k ) ) p = p. getnext ( ) ; return p ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 46 / 67

47 Usuwanie wskazanego elementu z listy jednokierunkowej Dane wejściowe: Położenie pierwszego elementu listy; Element do usunięcia; Algorytm: List-Delete(L,x) 1: if (x == head[l]) then 2: head[l] := next[x]; 3: else 4: y := head[l]; 5: while (next[y]!=x) do 6: y := next[y]; 7: end while 8: next[y]:= next[x]; 9: end if Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 47 / 67

48 Usuwanie elementu z listy jednokierunkowej Złożoność Procedura List-Delete usuwa element x z listy L. Ponieważ niekiedy potrzebne jest przejście całej listy L, aby znaleźć element x, to pesymistyczny czas działania procedury List-Delete na liście o n elementach wynosi O(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 48 / 67

49 Usuwanie elementu z listy jednokierunkowej I public T removefirst ( ) { i f ( isempty ( ) ) return null ; T answer = f i r s t. getdata ( ) ; n ; i f ( n == 0) { f i r s t = null ; l a s t = null ; else { Node<T> p = f i r s t ; f i r s t = f i r s t. getnext ( ) ; p = null ; return answer ; public T removelast ( ) { i f ( isempty ( ) ) return null ; T answer = l a s t. getdata ( ) ; n ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 49 / 67

50 Usuwanie elementu z listy jednokierunkowej II / / b y l jeden element i f ( n == 0) { f i r s t = null ; l a s t = null ; return answer ; i f ( n == 1) { l a s t = null ; l a s t = f i r s t ; return answer ; / / > 2 eleenty Node<T> p = f i r s t ; while ( p. getnext ( )!= l a s t ) p = p. getnext ( ) ; l a s t = p ; p. setnext ( null ) ; return answer ; public void remove ( T k ) Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 50 / 67

51 Usuwanie elementu z listy jednokierunkowej III { i f ( isempty ( ) ) return ; / / czy element j e s t na l i s c i e Node<T> p = this. f i r s t ; while ( ( p!= null ) && ( p. getdata ( )!= k ) ) p = p. getnext ( ) ; i f ( p == null ) { System. out. p r i n t l n ( " Elementu " + k + " nie ma na l i s c i e " ) ; return ; / / j e s t co najmniej 1 element n ; / / usuwamy pierwszy e l eent i f ( k == f i r s t. getdata ( ) ) { removefirst ( ) ; return ; / / usuwamy o s t a t n i element i f ( k == l a s t. getdata ( ) ) { removelast ( ) ; return ; / / usuwamy ze srodka Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 51 / 67

52 Usuwanie elementu z listy jednokierunkowej IV p = this. f i r s t ; while ( ( p. getnext ( )!= null ) && ( ( p. getnext ( ) ). getdata ( )!= k ) ) { p = p. getnext ( ) ; Node<T> q = p. getnext ( ) ; Node<T> r = p. getnext ( ). getnext ( ) ; p. setnext ( r ) ; q = null ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 52 / 67

53 Lista jedno- i dwu kierunkowa - schemat Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 53 / 67

54 Węzeł listy dwukierunkowej class Node<T> { private T data ; private Node<T> next ; private Node<T> prev ; public Node ( T data, Node<T> n, Node<T> p ) { data = d ; next = n ; prev = p ; public void setdata ( T d ) { data = d ; public void setnext ( Node<T> n ) { next = n ; public void setprev ( Node<T> p ) { prev = p ; public T getdata ( ) { return data ; public Node<T> getnext ( ) { return next ; public Node<T> getprev ( ) { return prev ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 54 / 67

55 Dodawanie elementu do listy dwukierunkowej na poczatek Dane wejściowe: Położenie pierwszego elementu listy ; Dodawany klucz; Algorytm: List-add-front(Lista L, Item item) 1: Utwórz nowy węzeł x; 2: key[x] := item; prev[x] := NULL; next[x]:= head[l]; 3: if (head[l]!= NULL) then 4: prev[head[l]] := x; 5: end if 6: head[l] := x; 7: if Lista L jest pusta then 8: tail[l] = x; 9: end if Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 55 / 67

56 Dodawanie elementu do listy dwukierunkowej na poczatek Złożoność Procedura List-add-front(Lista L, Item item) dodaje nowy węzeł zawierajacy klucz item na poczatek listy. Procedura List-add-front na liście o n elementach działa w czasie O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 56 / 67

57 Dodawanie elementu do listy dwukierunkowej na poczatek public void a d d F i r s t ( T item ) { Node<T> p = new Node<T>( item, null, null ) ; p. setnext ( f i r s t ) ; i f ( f i r s t!= null ) { f i r s t. setprev ( p ) ; f i r s t = p ; i f ( n==0) { / / l i s t a pusa l a s t = p ; n++; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 57 / 67

58 Dodawanie elementu do listy dwukierunkowej na koniec Dane wejściowe: Położenie ostatniego elementu listy. Dodawany klucz. Algorytm: List-add-end(Lista L, Item item) 1: Utwórz nowy węzeł x; 2: key[x] := item; next[x] := NULL; prev[x] := NULL; 3: if (L jest pusta) then 4: head[l] : = x; tail[l] := x; 5: else 6: prev[x] := tail[l]; 7: if (tail[l]!= NULL) then 8: next[tail[l]] := x; 9: end if 10: tail[l] := x; 11: end if Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 58 / 67

59 Dodawanie elementu do listy dwukierunkowej na koniec Złożoność Procedura List-add-end(Lista L, Item item) dodaje nowy węzeł zawierajacy klucz item na koniec listy jednokierunkowej. Procedura List-add-end na liście o n elementach działa w czasie O(1). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 59 / 67

60 Dodawanie elementu do listy dwukierunkowej na koniec public void addlast ( T item ) { Node<T> p = new Node<T>( item, null, null ) ; i f ( n==0) { / / l i s t a pusta f i r s t = p ; l a s t = p ; else { / / j e s t co najmniej jedn element p. setprev ( l a s t ) ; i f ( l a s t!= null ) l a s t. setnext ( p ) ; l a s t = p ; n++; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 60 / 67

61 Wyszukiwanie elementu na liście dwukierunkowej Dane wejściowe: Położenie pierwszego elementu listy; Kryterium poszukiwania klucz; Algorytm: List-Search(Lista L, Item item) 1: x := head[l]; 2: while (x!= NULL and key[x]!= item) do 3: x := next[x]; 4: end while 5: return x; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 61 / 67

62 Wyszukiwanie elementu na liście dwukierunkowej Złożoność Procedura List-Search(Lista L, Item item) wyznacza pierwszy węzeł zawierajacy klucz item na liście L. Ponieważ niekiedy potrzebne jest przejście całej listy L, aby znaleźć element o kluczu k, to pesymistyczny czas działania procedury List-Search na liście o n elementach wynosi O(n). Uwaga Implementacja identyczna do tej z listy jednokierunkowej. Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 62 / 67

63 Usuwanie pierwszego elementu z listy dwukierunkowej public T removefirst ( ) { i f ( isempty ( ) ) return null ; T answer = f i r s t. getdata ( ) ; n ; i f ( n == 0) { f i r s t = null ; l a s t = null ; else { Node<T> p = f i r s t ; f i r s t = f i r s t. getnext ( ) ; f i r s t. setprev ( null ) ; p = null ; return answer ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 63 / 67

64 Usuwanie ostatniego elementu z listy dwukierunkowej public T removelast ( ) { i f ( isempty ( ) ) return null ; T answer = l a s t. getdata ( ) ; n ; / / b y l jeden element i f ( n == 0) { f i r s t = null ; l a s t = null ; return answer ; / / byly 2 elementy i f ( n == 1) { l a s t = null ; l a s t = f i r s t ; return answer ; / / byly > 2 eleenty Node<T> p = l a s t. getprev ( ) ; l a s t = null ; p. setnext ( null ) ; l a s t = p ; return answer ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 64 / 67

65 Usuwanie wybranego klucza z listy dwukierunkowej I public void remove ( T k ) { i f ( isempty ( ) ) return ; / / czy element j e s t na l i s c i e Node<T> p = search ( k ) ; i f ( p == null ) { System. out. p r i n t l n ( " Elementu " + k + " nie ma na l i s c i e " ) ; return ; / / j e s t co najmniej 1 element n ; / / usuwamy pirwszy e l e e n t i f ( k == f i r s t. getdata ( ) ) { removefirst ( ) ; return ; / / usuwamy o s t a t n i element i f ( k == l a s t. getdata ( ) ) { Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 65 / 67

66 Usuwanie wybranego klucza z listy dwukierunkowej II removelast ( ) ; return ; / / usuwamy ze srodka Node<T> q = p. getprev ( ) ; Node<T> r = p. getnext ( ) ; q. setnext ( r ) ; r. setprev ( q ) ; p = null ; Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 66 / 67

67 Usuwanie wybranego klucza z listy dwukierunkowe Złożoność Metoda remove(t k) usuwa z listy pierwszy znaleziony węzeł zawierajacy klucz k. Ponieważ niekiedy potrzebne jest przejście całej listy, aby znaleźć węzeł z kluczem k, to pesymistyczny czas działania metody remove na liście o n elementach wynosi O(n). Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 7 67 / 67

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych - Lista Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych - Lista uporzadkowana. Wartownicy. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD)

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

Lista, Stos, Kolejka, Tablica Asocjacyjna Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,

Bardziej szczegółowo

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

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo

Bardziej szczegółowo

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

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

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

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

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych Algorytmy i Struktury Danych Wykład IV Sortowania cd. Elementarne struktury danych 1 Co dziś? Dolna granica sortowań Mediany i statystyki pozycyjne Warstwa implementacji Warstwa abstrakcji #tablice #listy

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

Bardziej szczegółowo

Dynamiczne struktury danych

Dynamiczne struktury danych Listy Zbiór dynamiczny Zbiór dynamiczny to zbiór wartości pochodzących z pewnego określonego uniwersum, którego zawartość zmienia się w trakcie działania programu. Elementy zbioru dynamicznego musimy co

Bardziej szczegółowo

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski Realizacja ekstensji klasy Paulina Strzelecka, Tomasz Roszkowski Przechowywanie obiektów (odwolañ do obiektów) w Javie typ wbudowany - tablica zbiór klas kontenerowych Paulina Strzelecka, Tomasz Roszkowski

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Grafy dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład 9 1 / 20

Bardziej szczegółowo

Paradygmaty programowania. Paradygmaty programowania

Paradygmaty programowania. Paradygmaty programowania Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................

Bardziej szczegółowo

Programowanie w języku Java. Kolekcje

Programowanie w języku Java. Kolekcje Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na

Bardziej szczegółowo

Dynamiczne struktury danych

Dynamiczne struktury danych Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie

Bardziej szczegółowo

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

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu

Bardziej szczegółowo

Java Collections Framework

Java Collections Framework Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Podstawowe struktury danych. Wykład na podstawie ksiażki Roberta Sedgewicka i Kevina Wayne: Algorithms. Furth Edition. Princeton University dr hab. Bożena Woźna-Szcześniak

Bardziej szczegółowo

Kolekcje w Javie cz. 1

Kolekcje w Javie cz. 1 Kolekcje w Javie cz. 1 Programowanie obiektowe Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego 8 kwietnia 2013 Po co są kolekcje? Po co są kolekcje? A po co są programy? Żeby manipulować danymi.

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 8 1 /

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład

Bardziej szczegółowo

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1 Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 03.12.2010 Łódź Java podstawy języka, wykład 4 1 Stosując blokady (synchronizację) Można doprowadzić do zablokowania wszystkich wątków Zakleszczenie

Bardziej szczegółowo

Programowanie Obiektowe (Java)

Programowanie Obiektowe (Java) 1. Wprowadzenie do kontenerów Wykład ósmy Kontenery s ą obiektami, które potrafi ą przechowywa ć inne obiekty w określony sposób. O kontenerach można myśle ć jako o gotowych do użycia strukturach danych.

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wieczorowe Studia Licencjackie Wrocław, 9.01.2007 Wstęp do programowania Wykład nr 13 Listy usuwanie elementów Poniżej prezentujemy funkcję, która usuwa element o podanej wartości pola wiek z nieuporządkowanej

Bardziej szczegółowo

Stos LIFO Last In First Out

Stos LIFO Last In First Out Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)

Bardziej szczegółowo

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)

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) Algorytmy i struktury danych Wykład 3: Stosy, kolejki i listy Dr inż. Paweł Kasprowski pawel@kasprowski.pl Kolejki FIFO First In First Out (kolejka) LIFO Last In First Out (stos) Stos (stack) Dostęp jedynie

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie

Bardziej szczegółowo

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych: stos, kolejka, lista, drzewo Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja

Bardziej szczegółowo

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

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

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

Wykład 4. Klasa List Kolejki Stosy Słowniki Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien

Bardziej szczegółowo

Porządek symetryczny: right(x)

Porządek symetryczny: right(x) Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)

Bardziej szczegółowo

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

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja 1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Podstawowe struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Abstrakcyjne struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Definicja kolekcji

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Organizacja wykładu. Problem Sortowania. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Lista dwukierunkowa - przykład implementacji destruktorów

Lista dwukierunkowa - przykład implementacji destruktorów Lista dwukierunkowa - przykład implementacji destruktorów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2008 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

Podstawowe algorytmy i ich implementacje w C. Wykład 9 Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

Podstawowe struktury danych

Podstawowe struktury danych Podstawowe struktury danych 1) Listy Lista to skończony ciąg elementów: q=[x 1, x 2,..., x n ]. Skrajne elementy x 1 i x n nazywamy końcami listy, a wielkość q = n długością (rozmiarem) listy. Szczególnym

Bardziej szczegółowo

E S - uniwersum struktury stosu

E S - uniwersum struktury stosu Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów

Bardziej szczegółowo

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

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach 27 kwietnia 2012 Wiedząc, że deklarowanie typu rekordowego w języku C/ C++ wygląda następująco: struct element

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Problem: Jak zaimplementować stos? Co się stanie gdy dodamy do stosu obiekt typu Czlowiek? Co się stanie, gdy spróbujemy ten obiekt odczytać

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2 Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

Podstawy otwartych języków programowania Przechowywanie danych Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe

Bardziej szczegółowo

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie obiektowe

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

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

KOLEJKA (QUEUE) (lista fifo first in, first out) KOLEJKA (QUEUE) (lista fifo first in, first out) Kolejki są listami, których elementy można wstawiać z jednego końca (rear-tył) a usuwać z drugiego (front - przód). Operacje: 1. MAKENULL(Q) czyni kolejkę

Bardziej szczegółowo

Algorytmy i Struktury Danych. Anna Paszyńska

Algorytmy i Struktury Danych. Anna Paszyńska Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

Programowanie i struktury danych 1 / 44 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

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

java.util.* :Kolekcje Tomasz Borzyszkowski

java.util.* :Kolekcje Tomasz Borzyszkowski java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

Dawid Gierszewski Adam Hanasko Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{

Bardziej szczegółowo

Drzewa wyszukiwań binarnych (BST)

Drzewa wyszukiwań binarnych (BST) Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.

Bardziej szczegółowo

Struktury dynamiczne

Struktury dynamiczne Struktury dynamiczne lista jednokierunkowa lista dwukierunkowa lista cykliczna stos kolejka drzewo Ich wielkość i stopień złożoności zmieniają się w czasie. Struktury dynamiczne oparte są o struktury (struct).

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć

Bardziej szczegółowo

Wykład 6. Dynamiczne struktury danych

Wykład 6. Dynamiczne struktury danych Wykład 6 Dynamiczne struktury danych 1 Plan wykładu Ø Wprowadzenie Ø Popularne dynamiczne struktury danych (ADT) Ø stosy, kolejki, listy opis abstrakcyjny Ø Listy liniowe Ø Implementacja tablicowa stosu

Bardziej szczegółowo

Wysokość drzewa Głębokość węzła

Wysokość drzewa Głębokość węzła Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ programowanie w C++ dla OWK Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Drzewa poszukiwań binarnych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych 1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Struktury. Przykład W8_1

Struktury. Przykład W8_1 Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla

Bardziej szczegółowo

Marcin Matusiak i Łukasz Stasiak

Marcin Matusiak i Łukasz Stasiak Marcin Matusiak i Łukasz Stasiak Lista jest sekwencyjną strukturą danych, która składa się z ciągu elementów tego samego typu. Dostęp do elementów listy jest sekwencyjny tzn. z danego elementu listy możemy

Bardziej szczegółowo

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

dr inż. Paweł Myszkowski Wykład nr 11 ( ) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Metoda Dziel i zwyciężaj. Problem Sortowania, cd. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Bożena Woźna-Szcześniak (AJD) Algorytmy

Bardziej szczegółowo

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcja obiekt, który grupuje inne obiekty, traktując je jako jeden zestaw danych i pozwalający na wykonywanie operacji

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Definicja słownika: Słownik (tablica lub lista symboli) to struktura danych zawierająca elementy z kluczami, która pozwala na przeprowadzanie dwóch

Bardziej szczegółowo

Podejście obiektowe. Tablice (1) obiektów

Podejście obiektowe. Tablice (1) obiektów 1. Tablice Tablica w Javie jest obiektem. Podejście obiektowe. Tablice (1) obiektów Deklarowanie tablicy String [] nazwy; //równowaŝne deklaracje zmiennej tablicowej String nazwy []; int liczby[]; //zamienna

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 5

Algorytmy i struktury danych. wykład 5 Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również

Bardziej szczegółowo

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 3 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Kolekcje. Na podstawie:

Kolekcje. Na podstawie: Kolekcje Na podstawie: http://wazniak.mimuw.edu.pl Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run(). Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public

Bardziej szczegółowo

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element

Bardziej szczegółowo

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Listy. Piotr Chrząstowski-Wachtel Wstęp do programowania Listy Piotr Chrząstowski-Wachtel Do czego stosujemy listy? Listy stosuje się wszędzie tam, gdzie występuje duży rozrzut w możliwym rozmiarze danych, np. w reprezentacji grafów jeśli

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów

Bardziej szczegółowo

Struktury danych. przez użytkownika, jak to ma miejsce w przypadku zwykłych zmiennych statycznych.

Struktury danych. przez użytkownika, jak to ma miejsce w przypadku zwykłych zmiennych statycznych. Struktury danych 1. Dynamiczne struktury danych Zmienna dynamiczna jest to zmienna, która pojawia się(i znika) wtedy gdy jest potrzebna(lub nie jest) podczas wykonywania się programu. Zwykłe zmienne statyczne,

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania

Bardziej szczegółowo

Wykład 5: Więcej o Klasach i Metodach

Wykład 5: Więcej o Klasach i Metodach Wykład 5: Więcej o Klasach i Metodach Przeciążanie Metod Klasa posiada dwie lub więcej metod o tej samej nazwie ale różnych deklaracjach parametrów. Java używa liczby i typów argumentów by ustalić którą

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

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

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych Wykład 6_ Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych Abstrakcyjny typ danych Klient korzystający z abstrakcyjnego typu danych: o ma do dyspozycji jedynie

Bardziej szczegółowo

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo