Wykłady opracowane zostały w oparciu o materiały prof. dr hab. Jerzego Weresa. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 2
|
|
- Krystian Rybak
- 6 lat temu
- Przeglądów:
Transkrypt
1
2 Wykłady opracowane zostały w oparciu o materiały prof. dr hab. Jerzego Weresa Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 2
3 Struktura danych (ang. data structure) sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych to: rekord, zwany w niektórych językach po prostu strukturą (ang. struct, record), logiczny odpowiednik to krotka, tablica, lista, stos, kolejka, drzewo i jego liczne odmiany (np. drzewo binarne), graf. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 3
4 Podczas implementacji programu programista często staje przed wyborem między różnymi strukturami danych, aby uzyskać pożądany efekt. Odpowiedni wybór może zmniejszyć złożoność obliczeniową, ale z drugiej strony trudność implementacji danej struktury może stanowić istotną przeszkodę. Ponieważ struktury danych są w programie rzeczą szczególnie istotną, wiele języków programowania wspiera programistę, dostarczając bibliotekę standardową z zaimplementowanymi różnorodnymi strukturami danych. Można tu wymienić Standard Template Library w C++, APIjęzyka Java oraz platformę.net. Próbą połączenia idei struktur danych i algorytmów jest pomysł programowania obiektowego. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 4
5 Typ w językach programowania opis rodzaju, struktury i zakresu wartości, jakie może przyjmować dany literał, zmienna, stała, argument, wynik funkcji lub wartość. Przykładowe typywystępujące wwielujęzykach programowania: typ całkowity (w C, C++, Javie np. int,wpascalunp.integer) typ reprezentujący liczbę całkowitą z jakiegoś zakresu zależnego od języka a nawet konkretnej implementacji. typ zmiennoprzecinkowy (w C, C++, Javie np. double, w Pascalu np. real) typ reprezentujący przybliżoną wartość liczby rzeczywistej. typ znakowy (w C, C++, Javie, Pascalu np. char) typ reprezentujący pojedynczy znak (ASCII lub w nowszych implementacjach Unicode) typ tekstowy (w Javie String, w C++, Pascalu np. string) typ reprezentujący cały tekst. W C jego rolę pełni wskaźnik do literału znakowego const char* typ wskaźnikowy oznacza wskaźnik na zmienną zadanego typu. typ referencyjny odmiana wskaźnika, referencja jest różnie pojmowana w poszczególnych językach. typ wyliczeniowy typ mogący przyjmować jedną z zadanych symbolicznych wartości, np. (czerwony, zielony, niebieski) Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 5
6 typ tablicowy ciąg zmiennych zadanego typu indeksowanych liczbą naturalną z pewnego przedziału (w większości języków programowania) lub dowolnym unikalnym kluczem który może być zarówno liczbą jak i ciągiem znaków (w PHP) typ strukturalny zespół połączonych w jedną całość zmiennych zwanych polami struktury. Do każdego pola można się odwoływać oddzielnie. klasa (typ obiektowy) odmiana struktury, w której oprócz zespołu danych dodane są także procedury działających na tych danych. Zmienna typu klasy nazywasię obiektem.pojęcie klasy spowodowało powstanie nowego paradygmatu programowania, zwanego programowaniem obiektowym i zrewolucjonizowało sposób myślenia programisty, który od tej pory patrzy na program jako na zbiór autonomicznych obiektów. typ pusty (np. void w C i C++) występuje np. w oznaczaniu funkcji nie zwracających żadnych zmiennych. typ logiczny (np. bool wc++) może przyjmować wartości logiczne 1 (true, t) lub 0(false, nil). Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 6
7 Kontener danych dostępnych, w którym poszczególne komórki dostępne są za pomocą kluczy, które najczęściej przyjmują wartości numeryczne. Rozmiar tablicy jest albo ustalony z góry (tablice statyczne), albo może się zmieniać w trakcie wykonywania programu (tablice dynamiczne). W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg, a tablicy dwuwymiarowej macierz. [1,3,5,2,7,8,4] Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 7
8 Praktycznie wszystkie języki programowania obsługują tablice jedynie w niektórych językach funkcyjnych zamiast tablic używane są listy (choć tablicezwykleteż są dostępne). Lista to struktura danych używana w informatyce. Jest to pojemnik składający się z połączonych ze sobą w łańcuszek komórek zawierających dane. Typowa lista jest łączona jednostronnie komórki zawierają tylko odnośnik do kolejnej komórki. Innym przypadkiem jest lista dwustronna, gdzie komórki zawierają także odnośnik do poprzednika. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 8
9 Popularna jest także lista zwana słownikową, która zazwyczaj jest wariacją listy jednostronnej. Z reguły stosuje się ją tam, gdzie elementy listy zawierają kilka pól z danymi, a kolejny element możerozszerzać pojęcie (definicję poprzedniego). Przykładem jest prosty translator tekstu, zrealizowany jako lista, gdzie każdy z elementów zawiera dane wyraz i definicja wyrazu możesię okazać, że definicja danego wyrazu ma swoje rozwinięcie (definicję) w pewnym innym elemencie, wówczas tam kieruje się dodatkowy łącznik. Istnieją dwie popularne implementacje struktury listy: tablicowa i wskaźnikowa. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 9
10 Implementacja tablicowa Jak wskazuje nazwa, lista zaimplementowana w ten sposób opiera się na tablicy obiektów (lub rekordów) danego typu. Dopisanie elementu do listy to wstawienie elementu do tablicy: jeślimaono nastąpić na końcu listy, będzie tokolejnyelement w tablicy; jeśli nowy element ma znaleźć się między innymi elementami, należyprzesunąć ojednopole w prawo wszystkie elementy o indeksie wyższym niż pole, na które będzie wstawiany obiekt; następnie w powstałą lukę wpisuje się nowy element. Usunięcie elementu znajdującego się pod danym indeksem tablicy to przesunięcie o jedno pole w lewo wszystkich elementów o indeksie wyższym. Zalety tej implementacji: prosta nawigacja wewnątrz listy, korzystanie z gotowej struktury tablicy, szybki dostęp do elementu o konkretnym numerze, większa odporność na błędy. Wady: niska elastyczność, szczególnie dotycząca rozmiaru tablicy, złożoność operacji wstawiania i usuwania. Implementację tablicową stosuje się tam, gdzie elastyczność nie odgrywa istotnej roli, a wymagana jest szybka i prosta nawigacja. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 10
11 Implementacja wskaźnikowa W tej implementacji każdy obiekt na liście musi (co nie było konieczne w wersji tablicowej) zawierać dodatkowy element: wskaźnik do innego obiektu tego typu. Wynika to z faktu, że to wskaźniki są podstawą nawigacji w tym typie listy, a dostęp do jej elementów jest możliwy wyłącznie przez wskaźnik. Dopisanie elementu (dla prostej listy jednostronnej): jeśli ma ono nastąpić na końcu listy, to wskaźnik wiążący w obiekcie ostatnim ustawia się na nowy obiekt danego typu; jeśli ma ono nastąpić wewnątrz listy, to najpierw tworzy się nowy obiekt danego typu i jego wskaźnik wiążący ustawia się na następnik elementu, za którym ma być wstawiany. Później wskaźnik poprzednika przestawia się na ten nowy obiekt. W tym przypadku bardzo ważna jest kolejność, której zachwianie jest częstą przyczyną błędów. Np. można najpierw przestawić wskaźnik poprzednika na nowy obiekt, co spowoduje bezpowrotną utratę dostępu do dalszych elementów listy, na które już nie będzie pokazywał żaden wskaźnik. Ustawienie wskaźnika nowego elementu na następnik nie będzie możliwe, bo nie będzie znany jego adres. Usunięcie elementu jest odwrotne do wstawiania: w pewnym miejscu zapisuje się wskaźnik do usuwanego elementu (aby nie "zgubić" jego adresu), następnie wskaźnik wiążący poprzednika przestawia się na następnik, i dopiero w tym momencie zwalnia się pamięć po obiekcie usuwanym (do tego potrzebny jest ten wskaźnik tymczasowy). Zalety i wady tej implementacji są komplementarne w stosunku do implementacji tablicowej. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 11
12 Wgłębiając się w szczegóły implementacji listy za pomocą wskaźników można wyróżnić następujące rodzaje list: lista jednokierunkowa wkażdym elemencie listy jest przechowywane odniesienie tylko do jednego sąsiada (następnika lub poprzednika). lista dwukierunkowa wkażdym elemencie listy jest przechowywane odniesienie zarówno do następnika jak i poprzednika elementu w liście. Taka reprezentacja umożliwia swobodne przemieszczanie się po liście w obie strony. lista cykliczna następnikiem ostatniego elementu jest pierwszy element, a poprzednikiem pierwszego ostatni. Po liście można więc przemieszczać się cyklicznie. Nie ma w takiej liście charakterystycznego ogona (ani głowy), częstorozpoznawanegopotym, że jegonastępnik jest pusty (NULL). lista z wartownikiem lista z wyróżnionym elementem zwanym wartownikiem. Jest to specjalnie oznaczony element niewidoczny dla programisty wykorzystującego listę. Pusta lista zawiera wtedy tylko wartownika. Zastosowanie wartownika znacznie upraszcza implementację operacji na listach. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 12
13 Stos (j. ang.: stack) jest strukturą danych, do której dostęp jest wyłącznie od strony wierzchołka (j. ang.: top) takie operacje jak położenie danych na stosie (j. ang.: push) lub zdjęcie ich (j. ang.: pop) mogą odbywać się jedynie na wierzchołku stosu. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 13
14 Zasada działania stosu: LIFO (j. ang.: Last In First Out), czyli Pierwszy wychodzi ten, kto wszedł ostatni. Zastosowania stosu: wywołanie funkcji, rekurencja. Implementacja stosu: tablica indeks tablicy wskazuje na element ostatnio położony na stosie; lista jednokierunkowa wierzchołek stosu znajduje się na początku listy. Do niego są dołączanenoweelementyizniegosą elementy zdejmowane. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 14
15 Podstawowe funkcje wykonywane na stosie: push (X) położenie elementu X na wierzchołku stosu, pop(x) zdjęcie elementu X z wierzchołka stosu. Funkcje te zwracają również kod błędu, stałą typu całkowitego informującą o wystąpieniu sytuacji anormalnej. push(x) pop(x) Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 15
16 Zasadę działania stosu można podsumować dwiema regułami: Po wykonaniu operacji push(x) węzeł X staje się nowym wierzchołkiem stosu, przykrywając poprzedni,jeśli stos nie był pusty. Jedynym bezpośrednio dostępnym węzłem jest wierzchołek stosu. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 16
17 Ilustracja podstawowych operacji wykonywanych na stosie o pojemności trzech elementów: s = pop (c); s = push ('A'); s = push ('B'); s = pop (c); s = push ('C'); s = push ('D'); s = StosPusty s = OK s = OK s = OK. s = OK s = StosPełny c =?? c = 'B' A B A A C A D C A push pop połóż - zdejmij Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 17
18 Przykład: stos1.c #include <stdio.h> #include <stdlib.h> struct WezelStosu int dana; struct WezelStosu *nastepnywsk; ; typedef struct WezelStosu WEZELSTOSU; typedef WEZELSTOSU *WEZELSTOSUWSK; void poloz(wezelstosuwsk *, int); int zdejmij(wezelstosuwsk *); int jestpusty(wezelstosuwsk); void drukujstos(wezelstosuwsk); void polecenia(void); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 18
19 main() WEZELSTOSUWSK stosuwsk = NULL; /* wskazuje na wierzcholek */ int wybor, wartosc; polecenia(); printf("? "); scanf("%d", &wybor); while (wybor!= 3) switch (wybor) case 1: /* poloz wartosc na stosie */ printf("wprowadz liczbe calkowita: "); scanf("%d", &wartosc); poloz(&stosuwsk, wartosc); drukujstos(stosuwsk); break; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 19
20 case 2: /* zdejmij wartosc ze stosu */ if (!jestpusty(stosuwsk)) printf("zdjeta wartosc wynosi %d.\n", zdejmij(&stosuwsk)); drukujstos(stosuwsk); break; default: printf("zly wybor.\n\n"); polecenia(); break; printf("? "); scanf("%d", &wybor); printf("koniec pracy.\n"); return 0; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 20
21 /* Wydruk polecen */ void polecenia(void) printf("wprowadz wybor:\n" "1 aby polozyc wartosc na stosie\n" "2 aby zdjac wartosc ze stosu\n" "3 aby zakonczyc program\n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 21
22 /* Polozenie wezla na wierzcholku stosu */ void poloz(wezelstosuwsk *wierzcholekwsk, int info) WEZELSTOSUWSK nowywsk; nowywsk = malloc(sizeof(wezelstosu)); if (nowywsk!= NULL) nowywsk->dana = info; nowywsk->nastepnywsk = *wierzcholekwsk; *wierzcholekwsk = nowywsk; else printf("%d nie wstawione. Brak dostepnej pamieci.\n", info); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 22
23 /* Usuniecie wezla z wierzcholka stosu */ int zdejmij(wezelstosuwsk *wierzcholekwsk) WEZELSTOSUWSK chwilowywsk; int zdejmijwartosc; chwilowywsk = *wierzcholekwsk; zdejmijwartosc = (*wierzcholekwsk)->dana; *wierzcholekwsk = (*wierzcholekwsk)->nastepnywsk; free(chwilowywsk); return zdejmijwartosc; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 23
24 /* Drukowanie zawartosci stosu */ void drukujstos(wezelstosuwsk biezacywsk) if (biezacywsk == NULL) printf("stos jest pusty.\n\n"); else printf("stos zawiera:\n"); while (biezacywsk!= NULL) printf("%d --> ", biezacywsk->dana); biezacywsk = biezacywsk->nastepnywsk; printf("null\n\n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 24
25 /* Czy stos jest pusty? */ int jestpusty(wezelstosuwsk wierzcholekwsk) return wierzcholekwsk == NULL; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 25
26 Przyklad: stos2.cpp #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <iostream.h> struct stos char dana[10]; stos *ref; ; stos *wskaznik; stos *stary; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 26
27 void poloz_na_stos(char dodaj[10]) stary=wskaznik; wskaznik=new stos; strcpy(wskaznik->dana,dodaj); wskaznik->ref=stary; void usun_wezel(stos *wezel) if (wezel!=null) stary=wezel->ref; printf("usunieto: %s\n",wezel->dana); delete wezel; wskaznik=stary; else printf("stos jest pusty\n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 27
28 void drukuj_zawartosc_stosu() printf("zawartosc stosu:\n"); stary=wskaznik; while (stary!=null) cout <<stary->dana<<"\n"; stary=stary->ref; void usun_wszystko(void) stary=wskaznik; while (stary!=null) usun_wezel(stary); printf("\n Stos oczyszczony. Nacisnij dowolny klawisz..."); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 28
29 void main(void) char dana[10]; printf("wprowadz dana, do 10 znakow, bez spacji:\n"); printf(" # - zdejmij dana ze stosu, \n"); printf(" $ - wypisz zawartosc stosu,\n"); printf(" & - usun wszystko i zakoncz prace\n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 29
30 do printf("dana: "); scanf("%s",&dana); if (strcmp(dana,"&")!=0) if (strcmp(dana,"#")==0) usun_wezel(wskaznik); else if (strcmp(dana,"$")==0) drukuj_zawartosc_stosu(); else poloz_na_stos(dana); while (strcmp(dana,"&")!=0); usun_wszystko(); getch(); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 30
31 Kolejki są strukturą danych o ograniczonym dostępie, zgodnie z zasadą FIFO (j. ang.: First In First Out), czyli Pierwszy wychodzi ten, kto pierwszy wszedł. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 31
32 Zawartość kolejki stanowią węzły (elementy) pomiędzy głową (czołem) a ogonem. Podstawowe operacje dotyczące kolejki: wstaw (enqueue) wstaw dane na ogon kolejki, usuń (dequeue) usuń dane z głowy kolejki. Gdy głowa jest równa ogonowi, kolejka jest pusta. Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 32
33 Przykład: kolejka1.c #include <stdio.h> #include <stdlib.h> struct wezelkolejki char dana; struct wezelkolejki *nastepnywsk; ; typedef struct wezelkolejki WEZELKOLEJKI; typedef WEZELKOLEJKI *WEZELKOLEJKIWSK; /* prototypy funkcji */ void drukujkolejke(wezelkolejkiwsk); int jestpusta(wezelkolejkiwsk); char usun(wezelkolejkiwsk *, WEZELKOLEJKIWSK *); void wstaw(wezelkolejkiwsk *, WEZELKOLEJKIWSK *, char); void polecenia(void); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 33
34 main() WEZELKOLEJKIWSK glowawsk = NULL, ogonwsk = NULL; int wybor; char pozycja; polecenia(); printf("? "); scanf("%d", &wybor); while (wybor!= 3) switch(wybor) case 1: printf("wprowadz znak: "); scanf("\n%c", &pozycja); wstaw(&glowawsk, &ogonwsk, pozycja); drukujkolejke(glowawsk); break; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 34
35 case 2: if (!jestpusta(glowawsk)) pozycja = usun(&glowawsk, &ogonwsk); printf("%c zostalo usuniete.\n", pozycja); drukujkolejke(glowawsk); break; default: printf("zly wybor.\n\n"); polecenia(); break; printf("? "); scanf("%d", &wybor); printf("koniec pracy.\n"); return 0; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 35
36 void polecenia(void) printf ("Wprowadz swoj wybor: \n" " 1 aby dodac wezel do kolejki \n" " 2 aby usunac wezel z kolejki \n" " 3 aby zakonczyc \n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 36
37 void wstaw(wezelkolejkiwsk *glowawsk, WEZELKOLEJKIWSK *ogonwsk, char wartosc) WEZELKOLEJKIWSK nowywsk; nowywsk = malloc(sizeof(wezelkolejki)); if (nowywsk!= NULL) nowywsk->dana = wartosc; nowywsk->nastepnywsk = NULL; if (jestpusta(*glowawsk)) *glowawsk = nowywsk; else (*ogonwsk)->nastepnywsk = nowywsk; *ogonwsk = nowywsk; else printf("%c nie wstawione do kolejki. Brak dostepnej pamieci.\n", wartosc); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 37
38 char usun(wezelkolejkiwsk *glowawsk, WEZELKOLEJKIWSK *ogonwsk) char wartosc; WEZELKOLEJKIWSK biezacywsk; wartosc = (*glowawsk)->dana; biezacywsk = *glowawsk; *glowawsk = (*glowawsk)->nastepnywsk; if (*glowawsk == NULL) *ogonwsk = NULL; free(biezacywsk); return wartosc; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 38
39 int jestpusta(wezelkolejkiwsk glowawsk) return glowawsk == NULL; void drukujkolejke(wezelkolejkiwsk biezacywsk) if (biezacywsk == NULL) printf("kolejka jest pusta.\n\n"); else printf("kolejka zawiera:\n"); while (biezacywsk!= NULL) printf("%c --> ", biezacywsk->dana); biezacywsk = biezacywsk->nastepnywsk; printf("null\n\n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 39
40 Przykład: kolejka2.cpp #include <iostream> #include <string> using namespace std; struct kolejka char dana[10]; kolejka *ref; ; kolejka *wskaznik; kolejka *tmp; kolejka *pierwszy; //Wsk. do pierwszego wezla kolejki Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 40
41 void wstaw_do_kolejki(char dodaj[10]) tmp=new kolejka; strcpy(tmp->dana,dodaj); if (wskaznik==null) pierwszy=tmp; //ustawianie wsk. //do pierwszego wezla else wskaznik->ref=tmp; wskaznik=tmp; void usun_wezel(void) if (pierwszy!=null) tmp=pierwszy->ref; printf("usunieto: %s\n",pierwszy->dana); delete pierwszy; pierwszy=tmp; else printf("kolejka jest pusta\n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 41
42 void drukuj_kolejke() printf("zawartosc kolejki:\n"); tmp=pierwszy; while (tmp!=null) cout <<tmp->dana<<"\n"; tmp=tmp->ref; void usun_wszystko(void) while (pierwszy!=null) usun_wezel(); printf("\nkolejka oczyszczona. Dowolny klawisz..."); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 42
43 int main(void) char dana[10]; printf("wprowadz dana do kolejki, do 10 znakow, bez spacji):\n"); printf(" # - usun pierwszy wezel, \n" " $ - wypisz zawartosc kolejki, \n" " & - usun wszystko i zakoncz \n"); Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 43
44 do printf("dane: "); scanf("%s",&dana); if (strcmp(dana,"&")!=0) if (strcmp(dana,"#")==0) usun_wezel(); else if (strcmp(dana,"$")==0) drukuj_kolejke(); else wstaw_do_kolejki(dana); while (strcmp(dana,"&")!=0); usun_wszystko(); system("pause"); return 0; Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 44
45 Kolejka priorytetowa (j. ang.: priority queue) Przykłady: osoby uprzywilejowane w kolejce, pojazdy uprzywilejowane na skrzyżowaniach, procesy uprzywilejowane w komputerowym przetwarzaniu danych. Zasada: węzły są usuwane według ich priorytetu oraz bieżącej pozycji w kolejce. Problem: znalezienie efektywnej implementacji szybkiego wstawiania i usuwania węzłów (kryteria mogą być złożone). Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 45
46 Kolejka priorytetowa (j. ang.: priority queue) Definicja: Kolejka priorytetowa jest strukturą danych zawierającą węzły z kluczami, pozwalającą na przeprowadzanie operacji wstawiania nowego węzła iusuwaniawęzła o najwyższej wartości klucza. Implementacja: z wykorzystaniem podstawowych struktur danych: uporządkowanych bądź nieuporządkowanych tablic, list lub kopców (j. ang.: heap, inne nazwy: sterta, stóg). Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 46
47 Poznań 2009/2010 Algorytmy i struktury danych Krzysztof Nowakowski 47
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ółowoStruktury 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ółowoStruktura 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ółowoWYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5
WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne
Bardziej szczegółowoDynamiczne 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ółowoWykł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ółowoWykł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ółowoTemat: 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ółowoPodstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane
Bardziej szczegółowoMateriał 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ółowoWykł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ółowoAlgorytmy 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ółowoProgramowanie 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ółowoPodstawowe 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ółowoINFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra
INFORMATYKA Podstawy programowania w języku C (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Temat: Struktury dynamiczne Wykład 7 Struktury dynamiczne lista jednokierunkowa,
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoStruktura 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ółowoProgramowanie 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ółowoStruktury. 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ółowoint tab_a [ 2 ] [ 3 ];
// PROGRAM 4_1 - Przyklady dynamicznego tworzenia // i usuwania tablicy dwuwymiarowej int [2][3] #include void main(void) //------------------------------ Przyklad A -------------------------------------------
Bardziej szczegółowoPodstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
Bardziej szczegółowoCo to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
Bardziej szczegółowoDYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
Bardziej szczegółowoAlgorytmy 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ółowoProjektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Bardziej szczegółowotablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
Bardziej szczegółowoE 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ółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoDynamiczne 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ółowoWstęp do programowania
wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.
Bardziej szczegółowoStruktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać
Bardziej szczegółowoAlgorytmy 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ółowoProgramowanie 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ółowoPodstawy Informatyki. Wykład 6. Struktury danych
Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą
Bardziej szczegółowoAlgorytmy 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ółowoINFORMATYKA DANE.
INFORMATYKA DANE http://www.infoceram.agh.edu.pl DANE Dane to zbiory liczb, znaków, sygnałów, wykresów, tekstów, itp., które mogą być przetwarzane. Pojęcie danych jest relatywne i istnieje tylko razem
Bardziej szczegółowoStos 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// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Bardziej szczegółowoWskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Bardziej szczegółowo1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Bardziej szczegółowoDANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE
DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem ASCII... J e s t e m t e k s t e m \0...
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoWskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Bardziej szczegółowoAlgorytmy 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ółowoTablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Bardziej szczegółowoEtap 2 - Budowa interfejsu. typedef struct ELEMENT* stos; struct ELEMENT { dane Dane; stos Nastepny; }; struct kolejka { stos Poczatek, Koniec; };
Wykład 6_2 Abstrakcyjne typy danych kolejki. Implementacja za pomocą tablicy i rekurencyjnej struktury danych czyli listy wiązanej Etap 1 - Opis ADT Nazwa typu: Kolejka elementów Własności typu: Potrafi
Bardziej szczegółowodr 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ółowoZajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
Bardziej szczegółowoProgramowanie komputerowe. Zajęcia 4
Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości
Bardziej szczegółowoWykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Bardziej szczegółowoLaboratorium 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ółowoKurs 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ółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowoListy, 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ółowoCo nie powinno być umieszczane w plikach nagłówkowych:
Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct
Bardziej szczegółowoProgramowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
Bardziej szczegółowoTABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;
Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Bardziej szczegółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoWykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik
Wykład X Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2016 c Copyright 2016 Janusz Słupik Drzewa binarne Drzewa binarne Drzewo binarne - to drzewo (graf spójny bez cykli) z korzeniem (wyróżnionym
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoTypy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1
Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy
Bardziej szczegółowoTypy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki
Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości
Bardziej szczegółowoPodstawy informatyki 2
Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Wykład nr 2 (07.03.2007) Wykład nr 2 2/46 Plan wykładu nr 2 Argumenty funkcji main
Bardziej szczegółowoStruktury 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ółowoKiedy 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ółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoWykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
Bardziej szczegółowoMateriał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
Bardziej szczegółowoWstęp do wskaźników w języku ANSI C
Wstęp do wskaźników w języku ANSI C / Materiał dydaktyczny pomocniczy do przedmiotu Informatyka sem.iii kier. Elektrotechnika/ 1. Wprowadzenie W języku ANSI C dla każdego typu X (wbudowanego, pochodnego,
Bardziej szczegółowoPodstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoLista, 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ółowoWykł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ółowoPodstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny
Wykład nr 2 2/6 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Plan wykładu nr 2 Argumenty funkcji main Dynamiczne struktury danych
Bardziej szczegółowoMetody 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ółowowykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoAlgorytmy 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ółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoĆwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych
Bardziej szczegółowoWstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)
1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,
Bardziej szczegółowoPodstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
Bardziej szczegółowoKOLEJKA (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ółowoWYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA
Rekurencja - zdolność podprogramu (procedury) do wywoływania samego (samej) siebie Wieże Hanoi dane wejściowe - trzy kołki i N krążków o różniących się średnicach wynik - sekwencja ruchów przenosząca krążki
Bardziej szczegółowoZmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
Bardziej szczegółowoWstę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ółowoKurs 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ółowoAlgorytmy 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ółowoSTL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Bardziej szczegółowoJava Podstawy. Michał Bereta
Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu
Bardziej szczegółowoOpis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja
Opis zagadnieo 1-3 Iteracja, rekurencja i ich realizacja Iteracja Iteracja to czynnośd powtarzania (najczęściej wielokrotnego) tej samej instrukcji (albo wielu instrukcji) w pętli. Mianem iteracji określa
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoProgramowanie I C / C++ laboratorium 03 arytmetyka, operatory
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include
Bardziej szczegółowoWYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
Bardziej szczegółowoAbstrakcyjne struktury danych w praktyce
Abstrakcyjne struktury danych w praktyce Wykład 13 7.4 notacja polska A.Szepietowski Matematyka dyskretna rozdział.8 stos kompilacja rozłączna szablony funkcji Przypomnienie Drzewo binarne wyrażenia arytmetycznego
Bardziej szczegółowoAlgorytmy i struktury danych. wykład 1
Plan całego wykładu:. Pojęcie algorytmu, projektowanie wstępujące i zstępujące, rekurencja. Klasy algorytmów. Poprawność algorytmu, złożoność obliczeniowa. Wskaźniki, dynamiczne struktury danych: listy,
Bardziej szczegółowo2. 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ółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowo