Wykład 7 Abstrakcyjne typy danych kolejka priorytetowa
|
|
- Władysława Kamińska
- 8 lat temu
- Przeglądów:
Transkrypt
1 Wykład 7 Abstrakcyjne typy danych kolejka priorytetowa Definicja kolejki priorytetowej: Kolejka priorytetowa to struktura danych zawierająca elementy z kluczami, która pozwala na przeprowadzanie dwóch podstawowych operacji: wstawiania nowego elementu i usuwania elementu o największej wartości (R.Sedgewick,Algorytmy w C++) Zastosowania kolejki priorytetowej (wg R.Sedgewick,Algorytmy w C++) Systemy symulacyjne, w których dane kolejki mogą odpowiadać czasom wystąpienia zdarzeń przeznaczonych do chronologicznego przetwarzania Planowanie zadań w systemach komputerowych dane kolejki mogą oznaczać priorytety wskazujące, którzy użytkownicy mają być obsługiwania w pierwszej kolejności Obliczenia numeryczne, gdzie klucze mogą być wartościami błędów obliczeniowych, oznaczającymi, że największy powinien zostać obsłużony jako pierwszy Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
2 Etap - Opis ADT Nazwa typu: Własności typu: Kolejka priorytetowa Kolejka elementów Potrafi przechować ciąg elementów usuwa zawsze największy element Dostępne działania: Inicjalizacja kolejki priorytetowej Określenie, czy kolejka priorytetowa jest pusta Dodanie elementu do kolejki priorytetowej, Usuwanie z kolejki priorytetowej największego elementu Etap - Budowa interfejsu void Inicjalizacja(kolejka_p& Kolejka_P); { działanie: inicjuje kolejkę priorytetową warunki wstępne: Kolejka_P jest pustą kolejką priorytetową warunki końcowe: kolejka priorytetowa zostaje zainicjowana jako pusta inline int Pusty(kolejka_p Kolejka_P); {działanie: określa, czy kolejka priorytetowa jest pusta; typ inline, bo często wywoływana warunki wstępne: Kolejka_P jest zainicjowana, warunki końcowe: funkcja zwraca, jeśli kolejka priorytetowa jest pusta, jeśli nie- 0 int Wstaw(kolejka_p& Kolejka_P, dane Dana); { działanie: dodaje element w dowolny sposób do kolejki priorytetowej warunki początkowe: Dana jest daną do wstawienia do zainicjowanej kolejki priorytetową Kolejka_P warunki końcowe: jeśli jest to możliwe, funkcja dodaje daną Dana do kolejki priorytetową i zwraca, w przeciwnym wypadku 0 int Usun(kolejka_p& Kolejka_P); { działanie: usuwa największy element wstawiony do kolejki priorytetowej, warunki początkowe: Kolejka_P jest niepustą kolejką priorytetową warunki końcowe: usuwa element największy z kolejki priorytetowej i zwraca dane przez return. Po usuwaniu kolejka może być pusta i musi być zainicjowana Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
3 Etap 3 - Implementacja za pomocą tablicy nieposortowanej wstawianie Kolejka_P Wstawianie do kolejki priorytetowej -przed pierwszy 5 N tab 0 4 Dana 3. Kolejka_P.pierwszy<N 4 Kolejka_P Wstawianie do kolejki priorytetowej - po pierwszy 3 5 N tab Dana. Kolejka_P.tab[Kolejka_P.pierwszy]= Dana; 3. Kolejka_P.pierwszy++; 4. Kolejka_P.pierwszy!=0 int Wstaw_p(kolejka_p& Kolejka_P, dane Dana) { if (Kolejka_P.pierwszy==N) return 0; //nie można wstawić do stosu, gdy jest pełen Kolejka_P.tab[Kolejka_P.pierwszy++]= Dana; return ; Autor: Zofia Kruczkiewicz, p.35 C3 3 USM, Algorytmy i struktury danych, Wykład 7
4 Usuwanie z kolejki priorytetowej Kolejka_P Usuwanie z kolejki priorytetowej -przed pierwszy tab N max. Kolejka_P.pierwszy!=0 Wyszukanie największego elementu o indeksie maxind. max=kolejka_p.tab[maksind] Kolejka_P Usuwanie z kolejki priorytetowej - po pierwszy tab N max 3. Kolejka_P.tab[maxind]= Kolejka_P.tab[--Kolejka_P.pierwszy]; return max 3 4 dane Usun_max(kolejka_p& Kolejka_P) { int maxind=0; for (int i=; i< Kolejka_P.pierwszy; i++) if (Kolejka_P.tab[i] > Kolejka_P.tab[maxind]) maxind = i; dane max = Kolejka_P.tab[maxind]; //zapisanie w miejscu pobranego elementu ostatniego z ciągu Kolejka_P.tab[maxind] = Kolejka_P.tab[--Kolejka_P.pierwszy]; return max; //zwrócenie największego elementu //wyszukanie największego elementu //pobranie największego elementu Autor: Zofia Kruczkiewicz, p.35 C3 4 USM, Algorytmy i struktury danych, Wykład 7
5 #include <conio.h> #include <stdlib.h> #include <string.h> #include <stdio.h> //. interfejs ADT kolejki priorytetowej typedef int dane; // dane umieszczone w kolejce priorytetowej const long N=; struct stos { int pierwszy; dane tab[n]; ; typedef stos kolejka_p; //nowa nazwa wynikająca z przedefiniowanego //zastosowania danych i niektorych funkcji stosu //prototypy funkcji kolejki_prorytetowej void Inicjalizacja(kolejka_p& Kolejka_P); inline int Pusty(kolejka_p Kolejka_P); int Wstaw_p(kolejka_p& Kolejka_P, dane Dana); dane Usun_max(kolejka_p& Kolejka_P); //. funkcje we/wy dla danych umieszczonych w kolejce p. void Pokaz_dane (dane Dana); dane Dane(char* menu); //3. funkcje ogolnego przeznaczenia void Komunikat(char*); char Menu(const int ile, char *Polecenia[]); //4. elementy programu const int Esc=7; const int POZ=4; char * Tab_menu[POZ] = {" : Wstawianie do kolejki_p", " : Usuwanie z kolejki_p najwiekszego elementu", "3 : Wydruk kolejki_p nierosnaco wraz z jej usuwaniem", " >Esc Koniec programu"; //funkcje klienta korzystajace z kolejki priorytetowej void Wstaw_do_kol_p(kolejka_p& Kolejka_P); void Wyswietl_usun_z_kol_p(kolejka_p& Kolejka_P); Autor: Zofia Kruczkiewicz, p.35 C3 5 USM, Algorytmy i struktury danych, Wykład 7
6 void main(void) { kolejka_p Kolejka_P; char Wybor; clrscr(); Inicjalizacja(Kolejka_P); do { Wybor= Menu(POZ, Tab_menu); switch (Wybor) { case '' : Wstaw_do_kol_p(Kolejka_P); break; case '' : if (Pusty(Kolejka_P)) Komunikat("\nKolejka_p pusta\n"); else (Usun_max(Kolejka_P)); break; case '3' : if (Pusty(Kolejka_P)) Komunikat("\nKolejka_p pusta\n") ; else Wyswietl_usun_z_kol_p(Kolejka_P); break; while (Wybor!=Esc ); //***funkcje klienta korzystające z kolejki priorytetowej** void Wstaw_do_kol_p(kolejka_p& Kolejka_P) { dane Dana= Dane("Podaj dane do kolejki p: "); if (Wstaw_p(Kolejka_P, Dana)==0) Komunikat("Brak pamieci\n"); void Wyswietl_usun_z_kol_p(kolejka_p& Kolejka_P) {dane d; while (!Pusty(Kolejka_P)) { d=usun_max(kolejka_p); Pokaz_dane(d); Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
7 //*********funkcje interfejsu ADT kolejki p************ void Inicjalizacja(kolejka_p& Kolejka_P) { Kolejka_P.pierwszy = 0; inline int Pusty(kolejka_p Kolejka_P) { return Kolejka_P.pierwszy==0; int Wstaw_p(kolejka_p& Kolejka_P, dane Dana) { if (Kolejka_P.pierwszy==N) return 0; Kolejka_P.tab[Kolejka_P.pierwszy++]= Dana; //dodanie elementu na końcu ciągu return ; dane Usun_max(kolejka_p& Kolejka_P) { int maxind=0; for (int i=; i< Kolejka_P.pierwszy; i++) if (Kolejka_P.tab[i] > Kolejka_P.tab[maxind]) maxind = i; dane max = Kolejka_P.tab[maxind]; //zapisanie w miejscu pobranego elementu ostatniego z ciągu Kolejka_P.tab[maxind] = Kolejka_P.tab[--Kolejka_P.pierwszy]; return max; //zwrócenie największego elementu //wyszukanie największego elementu //pobranie największego elementu //*********funkcje ogólnego przeznaczenia************ char Menu(const int ile, char *Polecenia[]) { clrscr(); for (int i=0; i<ile;i++) printf("\n%s",polecenia[i]); return getch(); void Komunikat(char* s) { printf(s); getch(); //***funkcje we/wy dla danych umieszczonych w kolejce p********* dane Dane(char* menu) { int a; do { fflush(stdin); printf("\n\n%s",menu); while (scanf("%d",&a)!=); return a; void Pokaz_dane(dane Dana) { printf("\nnumer: %d\n", Dana); printf("nacisnij dowolny klawisz...\n"); getch(); Autor: Zofia Kruczkiewicz, p.35 C3 7 USM, Algorytmy i struktury danych, Wykład 7
8 Etap 3 - Implementacja za pomocą tablicy - kopca Przykład: Należy wstawić dany ciąg wejściowy do tablicy kopca, czyli ustawić elementy w ciągu, aby wartość każdego elementu o numerze i (element zwany ojcem ) była nie mniejsza niż wartość elementów o numerach: i ( element lewy ) oraz i + (element prawy ). Numery elementów wartości elementów Zadanie : Utwórz kopiec metodą wstępującą Uwaga : Ciąg przekształcony w kopiec. W ciągu typu kopiec element o największej wartości znajduje się na pierwszej pozycji: Numery elementów Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
9 wartości elementów Zadanie : Należy kolejno usuwać kolejne elementy największe z kolejki priorytetowej za pomocą przesiewania zstępującego czyli zamiany największego elementu z początku kopca z elementem ostatnim w kopcu i odbudowy kopca z pozostałych elementów. Następnie można ten ostatni element usunąć kolejki priorytetowej. Proces ten należy powtarzać N razy, gdzie N jest liczbą elementów ciągu ) ) Autor: Zofia Kruczkiewicz, p.35 C3 9 USM, Algorytmy i struktury danych, Wykład 7
10 3) ) ) ) Autor: Zofia Kruczkiewicz, p.35 C3 0 USM, Algorytmy i struktury danych, Wykład 7
11 7) ) Uwaga : Ciąg usuwanych elementów posiada własności kopca, gdzie element o numerze i jest mniejszy lub równy elementom o numerach *i oraz *i+. Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
12 #include <conio.h> #include <stdlib.h> #include <string.h> #include <stdio.h> //. interfejs ADT stosu typedef int dane; // dane umieszczone stosie const long N=; struct stos { int pierwszy; dane tab[n]; ; typedef stos kolejka_p; //nowa nazwa wynikająca z przedefiniowanego //zastosowania danych i niektórych funkcji stosu //prototypy funkcji kolejki_prorytetowej void Inicjalizacja(kolejka_p& Kolejka_P); inline int Pusty(kolejka_p Kolejka_P); int Wstaw_p(kolejka_p& Kolejka_P, dane Dana); dane Usun_max(kolejka_p& Kolejka_P); //. funkcje we/wy dla danych umieszczonych w kolejce p. void Pokaz_dane (dane Dana); dane Dane(char* menu); //3. funkcje ogolnego przeznaczenia void Komunikat(char*); char Menu(const int ile, char *Polecenia[]); //4. elementy programu const int Esc=7; const int POZ=4; char * Tab_menu[POZ] = {" : Wstawianie do kolejki_p", " : Usuwanie z kolejki_p najwiekszego elementu", "3 : Wydruk kolejki_p nierosnaco wraz z jej usuwaniem", " >Esc Koniec programu"; //funkcje klienta korzystajace z kolejki priorytetowej void Wstaw_do_kol_p(kolejka_p& Kolejka_P); void Wyswietl_usun_z_kol_p(kolejka_p& Kolejka_P); Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
13 void main(void) { kolejka_p Kolejka_P; char Wybor; clrscr(); Inicjalizacja(Kolejka_P); do { Wybor= Menu(POZ, Tab_menu); switch (Wybor) {case '' : Wstaw_do_kol_p(Kolejka_P); break; case '' : if (Pusty(Kolejka_P)) Komunikat("\nKolejka_p pusta\n"); else (Usun_max(Kolejka_P)); case '3' : break; if (Pusty(Kolejka_P)) Komunikat("\nKolejka_p pusta\n") ; else Wyswietl_usun_z_kol_p(Kolejka_P); break; while (Wybor!=Esc ); /*funkcje do przesiewania stogu w górę i w dół, pomocnicze dla kolejki priorytetowej szybkie znajdowanie elementu największego*/ inline void zamien(dane &a, dane &b) { dane pom=a; a=b; b=pom; //prostszy zapis funkcji do przesiewania zstępującego kopca void przywroc_kopiec_w_dol(dane t[], long p, long ojciec) {long maks,ll,pp; while (ojciec < p) { ll = *ojciec; //lewy nastepca ojca pp=ll+; //prawy nastepca ojca if (ll <= p && t[ll] > t[ojciec]) maks=ll; else maks=ojciec; if (pp <= p && t[maks] < t[pp]) maks=pp; if (maks!=ojciec) { zamien(t[maks],t[ojciec]); ojciec=maks; else break; Autor: Zofia Kruczkiewicz, p.35 C3 3 USM, Algorytmy i struktury danych, Wykład 7
14 //funkcja, która przesiewa kopiec wstępująco void przywroc_kopiec_w_gore(dane t[], long p, long ojciec) { while (ojciec>0 && t[ojciec/] < t[ojciec]) { zamien(t[ojciec/], t[ojciec]); ojciec=ojciec/; //********************************************************* //**funkcje interfejsu ADT kolejki p opartej na funkcjach stogu* void Inicjalizacja(kolejka_p& Kolejka_P) { Kolejka_P.pierwszy = 0; inline int Pusty(kolejka_p Kolejka_P) { return Kolejka_P.pierwszy==0; int Wstaw_p(kolejka_p& Kolejka_P, dane Dana) { if (Kolejka_P.pierwszy==N) return 0; //wstawianie jako do stosu, czyli na koniec kopca Kolejka_P.tab[Kolejka_P.pierwszy++]= Dana; przywroc_kopiec_w_gore(kolejka_p.tab, 0, Kolejka_P.pierwszy-); //wstawienie największego elementu na początek kopca return ; dane Usun_max(kolejka_p& Kolejka_P) { zamien(kolejka_p.tab[0], K Kolejka_P.tab[--Kolejka_P.pierwszy]); //największy element na koniec stogu przywroc_kopiec_w_dol(kolejka_p.tab, Kolejka_P.pierwszy-, 0); //odtworzenie stogu bez ostatniego elementu dane max= Kolejka_P.tab[Kolejka_P.pierwszy]; //pobranie największego elementu ze stogu return max; Autor: Zofia Kruczkiewicz, p.35 C3 4 USM, Algorytmy i struktury danych, Wykład 7
15 Etap 3. Implementacja kolejki priorytetowej za pomocą sortowanej listy wiązanej szukanie i wstawianie do listy w przed większym lub równym elementem lub na końcu listy, gdy nie znaleziono elementu równego lub większego (wynik funkcji Szukaj jest dowolny) ) Lista.Poczatek=NULL Nowy D Lista.Gdzie=NULL ) Lista.Poczatek=Nowy ) Nowy->Nastepny=Lista.Poczatek Nowy D NULL Lista.Poczate D Lista.Gdzie NULL Nowy A NULL Lista.Poczate D Lista.Gdzie Nowy A NULL ) Lista.Gdzie->Nastepny=Nowy Lista.Gdzie=NULL Lista.Poczate D Lista.Poczate Nowy Z D ) Nowy->Nastepny=Lista.Gdzie->Nastepny A Nowy NULL Z Lista.Gdzie=NULL A NULL ) Lista.Poczatek=Nowy ) Nowy->Nastepny=Lista.Poczatek Lista.Poczate Z D A NULL Nowy B Lista.Poczate Z Lista.Gdzie D Nowy B A NULL Lista.Gdzie ) Lista.Gdzie->Nastepny=Nowy ) Nowy->Nastepny=Lista.Gdzie->Nastepny Autor: Zofia Kruczkiewicz, p.35 C3 5 USM, Algorytmy i struktury danych, Wykład 7
16 int Szukaj(lista& Lista,dane Dana) {Lista.Gdzie = NULL; if (Pusty(Lista)) return 0; stos Nast = Lista.Poczatek; while ((Nast->Nastepny!=NULL) && Nast->Dane>Dana) { Lista.Gdzie= Nast; Nast = Nast->Nastepny; if (Nast->Dane> Dana) Lista.Gdzie= Nast; //wiec jest wstawiany na końcu if (Nast->Dane==Dana) return ; else return ; int Wstaw(lista& Lista, dane Dana) { stos Nowy = new ELEMENT; if (Nowy!=NULL) Nowy->Dane=Dana; else return 0; if (Lista.Gdzie==NULL) { Nowy->Nastepny= Lista.Poczatek; Lista.Poczatek= Nowy; else { Nowy->Nastepny = Lista.Gdzie->Nastepny; Lista.Gdzie->Nastepny = Nowy; return ; //wstawiany element jest najmniejszy, Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
17 usuwanie elementów zawsze na początku kolejki priorytetowej posortowanej listy wiązanej Kolejka_P.Poczatek Pom D B A NULL Pom D B A NULL Kolejka_P.Poczatek /*interfejs ADT kolejki priorytetowej jako uporządkowanej listy wiązanej */ dane Usun_max(kolejka_p& Kolejka_P) //jak ze stosu-zdejmuje się największy element { stos Pom; //listy posortowanej nierosnąco dane d; Pom= Kolejka_P.Poczatek; Kolejka_P.Poczatek= Kolejka_P.Poczatek->Nastepny; //odłączenie pierwszego elementu od listy d=pom->dane; //((*Pom).Dane) delete Pom; //usunięcie pierwszego elementu z pamięci return d; //zapamiętanie pierwszego elementu do usunięcia int Wstaw_p(kolejka_p& Kolejka_P, dane Dana) nierosnąco { Szukaj(Kolejka_P, Dana); int a = Wstaw(Kolejka_P, Dana); return a; //powstaje lista posortowana void Inicjalizacja(kolejka_p& Kolejka_P) { Kolejka_P.Poczatek = NULL; inline int Pusty(kolejka_p Kolejka_P) { return Kolejka_P.Poczatek==NULL; Autor: Zofia Kruczkiewicz, p.35 C3 7 USM, Algorytmy i struktury danych, Wykład 7
18 #include <conio.h> #include <stdio.h> //. interfejs ADT kolejki priorytetowej jako uporządkowanej listy //wiązanej typedef int dane; // dane umieszczone liście typedef struct ELEMENT* stos; // nazwa wskaźnika na element stosu struct ELEMENT //element listy { dane Dane; stos Nastepny; ; struct lista //typ listy wiązana uporządkowana { stos Poczatek; stos Gdzie; ; typedef lista kolejka_p; //nowa nazwa wynikająca z przedefiniowanego //zastosowania danych i niektórych funkcji listy //prototypy funkcji kolejki_prorytetowej void Inicjalizacja(kolejka_p& Kolejka_p); inline int Pusty(kolejka_p Kolejka_p); int Wstaw_p(kolejka_p& Kolejka_P, dane Dana); dane Usun_max(kolejka_p& Kolejka_P); //. funkcje we/wy dla danych umieszczonych na liście void Pokaz_dane (dane Dana); dane Dane(char* s); //3. funkcje ogolnego przeznaczenia void Komunikat(char*); char Menu(const int ile, char *Polecenia[]); //4. elementy programu const int Esc=7; const int POZ=4; char * Tab_menu[POZ] = {" : Wstawianie do kolejki_p", " : Usuwanie z kolejki_p najwiekszego elementu", "3 : Wydruk kolejki_p nierosnaco wraz z jej usuwaniem", " >Esc Koniec programu"; Autor: Zofia Kruczkiewicz, p.35 C3 USM, Algorytmy i struktury danych, Wykład 7
19 //funkcje klienta korzystajace z kolejki priorytetowej void Wstaw_do_kol_p(kolejka_p& Kolejka_P); void Wyswietl_usun_z_kol_p(kolejka_p& Kolejka_P); void main(void) { kolejka_p Kolejka_P; char Wybor; clrscr(); Inicjalizacja(Kolejka_P); do { Wybor= Menu(POZ, Tab_menu); switch (Wybor) {case '' : Wstaw_do_kol_p(Kolejka_P); break; case '' : if (Pusty(Kolejka_P)) Komunikat("\nKolejka_p pusta\n"); else (Usun_max(Kolejka_P)); break; case '3' : if (Pusty(Kolejka_P)) Komunikat("\nKolejka_p pusta\n") ; else Wyswietl_usun_z_kol_p(Kolejka_P); break; while (Wybor!=Esc ); /*pomocnicze funkcje dla kolejki priorytetowej jako uporządkowanej listy wiazanej*/ int Szukaj(lista& Lista,dane Dana) {Lista.Gdzie = NULL; if (Pusty(Lista)) return 0; stos Nast = Lista.Poczatek; while ((Nast->Nastepny!=NULL) && Nast->Dane>Dana) { Lista.Gdzie= Nast; Nast = Nast->Nastepny; if (Nast->Dane> Dana) //wstawiany element jest najmniejszy, Lista.Gdzie= Nast; //wiec jest wstawiany na koncu if (Nast->Dane==Dana) return ; else return ; int Wstaw(lista& Lista, dane Dana) { stos Nowy = new ELEMENT; if (Nowy!=NULL) Nowy->Dane=Dana; else return 0; if (Lista.Gdzie==NULL) { Nowy->Nastepny= Lista.Poczatek; Lista.Poczatek= Nowy; else { Nowy->Nastepny = Lista.Gdzie->Nastepny; Lista.Gdzie->Nastepny = Nowy; return ; Autor: Zofia Kruczkiewicz, p.35 C3 9 USM, Algorytmy i struktury danych, Wykład 7
20 /*interfejs ADT kolejki priorytetowej jako uporządkowanej listy wiązanej */ void Inicjalizacja(kolejka_p& Kolejka_P) { Kolejka_P.Poczatek = NULL; inline int Pusty(kolejka_p Kolejka_P) { return Kolejka_P.Poczatek==NULL; int Wstaw_p(kolejka_p& Kolejka_P, dane Dana) { Szukaj(Kolejka_P, Dana); int a = Wstaw(Kolejka_P,Dana); return a; //powstaje lista posortowana nierosnąco dane Usun_max(kolejka_p& Kolejka_P) //jak ze stosu-zdejmuje się największy element { stos Pom; //listy posortowanej nierosnąco dane d; Pom= Kolejka_P.Poczatek; Kolejka_P.Poczatek= Kolejka_P.Poczatek->Nastepny; d=pom->dane; delete Pom; return d; //****funkcje klienta korzystające z kolejki priorytetowej**** void Wstaw_do_kol_p(kolejka_p& Kolejka_P) { dane Dana= Dane("Podaj dane: "); { if (!Wstaw_p(Kolejka_P, Dana)) Komunikat("\nBrak pamieci"); void Wyswietl_usun_z_kol_p(kolejka_p& Kolejka_P) {dane d; while (!Pusty(Kolejka_P)) { d=usun_max(kolejka_p); Pokaz_dane(d); //*********funkcje ogólnego przeznaczenia************ char Menu(const int ile, char *Polecenia[]) { clrscr(); for (int i=0; i<ile;i++) printf("\n%s",polecenia[i]); return getch(); void Komunikat(char* s) { printf(s); getch(); //funkcje we/wy dla danych umieszczonych na kolejce priorytetowej dane Dane(char* s) { int a; do { fflush(stdin); printf("\n\n%s",s); while (scanf("%d",&a)!=); return a; void Pokaz_dane(dane Dana) { printf("\nnumer: %d\n", Dana); printf("nacisnij dowolny klawisz...\n"); getch(); Autor: Zofia Kruczkiewicz, p.35 C3 0 USM, Algorytmy i struktury danych, Wykład 7
Etap 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
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
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
1. Abstrakcyjne typy danych
1. Abstrakcyjne typy danych 1.1.Glówne cechy typów danych stosowanych w programach: 1) musza byc dostosowane do rozwiazywanego problemu 2) musza zawierac dwa rodzaje informacji: 2.1) zbiór wlasnosci 2.2)
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
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
np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:
Wykład 4 Wyszukiwania w tablicach posortowanych 1. Wyszukiwanie sekwencyjne w tablicy posortowanej 2. Wyszukiwanie binarne bez powtórzeń 3. Wyszukiwanie binarne z powtórzeniami 1 2 3 4 5 6 7 8 9 10 11
Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych
Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych Założenia: 1. Pamięć wewnętrzna ma ograniczone rozmiary 2. Pamięć zewnętrzna ma rozmiary nieograniczone
Ć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
Wykład 9 - struktury rekurencyjne uporządkowane
Wykład - struktury rekurencyjne uporządkowane 1. Zstępujące drzewa 2--4 2. Drzewa wyważone czerwono-czarne. B-drzewa - - wyszukiwanie zewnętrzne Autor: Zofia Kruczkiewicz, p.25 C USM, 1 Algorytmy i struktury
// dane umieszczone liście. Autor: Zofia Kruczkiewicz, p.325 C3 1 USM, Algorytmy i struktury danych, Wykład 8
Wykład Abstrakcyjne typy danych. Struktury wiązane Lista dwukierunkowa uporządkowana. Drzewa. Drzewa poszukiwań binarnych: wstawianie liści, wstawianie do korzenia, obroty w węzłach, wyważanie drzewa,
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
WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński
WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void
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
Co 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
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
ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie
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
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
Wykł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
struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];
PRZYKLAD p_30.cpp Przykladowa implementacja "listy studentów" z porzadkowaniem wedlug róznych kryteriów zaimplementowanym poprzez "fizyczne" sortowanie danych oraz poprzez sortowanie "logiczne" za pomoca
// 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
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
METODY 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ę
TABLICE 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
Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres: Funkcje czyli wieloużywalność kodu Omówienie przekazywania argumentów: "przez
int tab_a [ 2 ] [ 3 ];
// PROGRAM 4_1 - Przyklady dynamicznego tworzenia // i usuwania tablicy dwuwymiarowej int [2][3] #include void main(void) //------------------------------ Przyklad A -------------------------------------------
Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Arytmetyka wskaźników, konwersja (rzutowanie) wskaźników Ćwiczenia z dostępu
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
tablica: 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
Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:
Sortowanie Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania: podać strukturę danych dla elementów dynamicznego skończonego multi-zbioru S, względem którego są wykonywane następujące
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Wstęp do programowania 1
Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short
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
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
Wykład 1 Wprowadzenie do algorytmów. Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami.
Wykład 1 Wprowadzenie do algorytmów Zawartość wykładu 1. Wstęp do algorytmów i struktur danych 2. Algorytmy z rozgałęzieniami Wykaz literatury 1. N. Wirth - Algorytmy+Struktury Danych = Programy, WNT Warszawa
Kontrola przebiegu programu
Kontrola przebiegu programu Wykład 9 Instrukcje sterujące: pętle rozgałęzienia skoki PRZYPOMINAJKA Zadanie : Zaprojektuj rekurencyjny przepis na wyznaczenie największej takiej liczby m, że 2 m jest podzielnikiem
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.
Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal
Instrukcja wyboru, pętle 2 wykład. Podstawy programowania - Paskal Tematy Instrukcja wyboru jeden z wielu wariantów: case Pętle while repeat for Instrukcje sterowania pętli break continue goto Instrukcja
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
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
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ę
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,
WYKŁ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 ======================================================================================================
Algorytm selekcji Hoare a. Łukasz Miemus
Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego
Strategia "dziel i zwyciężaj"
Strategia "dziel i zwyciężaj" W tej metodzie problem dzielony jest na kilka mniejszych podproblemów podobnych do początkowego problemu. Problemy te rozwiązywane są rekurencyjnie, a następnie rozwiązania
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
Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków
Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków Nie wolno definicji funkcji zagniezdzac w ciele innej funkcji! Funkcje bez parametrów musza korzystac ze zmiennych globalnych, jesli zachodzi potrzeba
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
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 Struktura danych (ang. data structure) sposób uporządkowania
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
Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1
Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem
Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!
Rekurencja Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)! Pseudokod: silnia(n): jeżeli n == 0 silnia = 1 w przeciwnym
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.
Podstawy 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
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
Sortowanie. Bartman Jacek Algorytmy i struktury
Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39
Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )
SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Wskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.
Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. 1. Pojcie struktury danych Nieformalnie Struktura danych (ang. data
- - Ocena wykonaniu zad3. Brak zad3
Indeks Zad1 Zad2 Zad3 Zad4 Zad Ocena 20986 218129 ocena 4 Zadanie składa się z Cw3_2_a oraz Cw3_2_b Brak opcjonalnego wywołania operacji na tablicy. Brak pętli Ocena 2 Brak zad3 Ocena wykonaniu zad3 po
funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)
Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.
Funkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Podstawowe algorytmy przetwarzania tablic (wypełnianie, porównywanie elementów,
Wstę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,
Laboratorium nr 7 Sortowanie
Laboratorium nr 7 Sortowanie 1. Sortowanie bąbelkowe (BbS) 2. Sortowanie przez wstawianie (IS) 3. Sortowanie przez wybieranie (SS) Materiały Wyróżniamy następujące metody sortowania: 1. Przez prostą zamianę
Zmienne 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
Podstawy 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
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
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
Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;
Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu
Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)
Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia
Podstawy Programowania 2 Dwukierunkowa lista liniowa. Plan. Wstęp. Implementacja. Notatki. Notatki. Notatki. Notatki.
Podstawy Programowania 2 Dwukierunkowa lista liniowa Arkadiusz Chrobot Zakład Informatyki 7 kwietnia 2019 1 / 55 Plan Wstęp Implementacja Typ bazowy i wskaźnik listy Tworzenie listy Dodawanie elementu
Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.
Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego
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)
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
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
Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna
Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2016 1 / 8 Plan Wstęp Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz Zmiany w funkcji main()
prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325
PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj
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
Wstęp do programowania 1
Wstęp do programowania 1 Argumenty funkcji main Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Argumenty funkcji main dwa równoważne sposoby int main(int argc, char*
KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.
Funkcje. Deklaracja funkcji: KURS C/C++ WYKŁAD 8 #include //deklaracje funkcji: printf(...), scanf(...) #include //double sqrt (double ) #include //void clrscr (void) void main
Sortowanie - wybrane algorytmy
Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe
Typy 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
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
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
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat 4: Realizacje dynamicznych struktur danych. Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady
Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy
Programowanie Proceduralne
Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Wskaźniki i tablice int a[10], b[10]; int* c; c = &a[0]; // c wskazuje na pierwszy element tablicy
Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle
Pętle while, for, while, instrukcje break, continue, switch 1. Pętle Przykład 1 - Pętla while public class lab4_3 public static void main(string[] args) char ch = 'a'; String s, wynik=""; while ( ch!=
Wstęp do programowania
Wieczorowe Studia Licencjackie Wrocław, 12.12.2006 Wstęp do programowania Wykład nr 11 Struktury Podstawowe pojęcia Struktura pozwala na zebranie razem danych różnych typów (np. danych osobowych). Definicja
EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew
1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;
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
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Podstawy Programowania. Listy i stosy
Podstawy Programowania Wykład IX Listy i stosy Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: listy: tworzenie, wyszukiwanie, przeglądanie, usuwanie, problemy, listy z głową, z wartownikiem,
część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia
Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy
Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : grudnia 2005.)
Kolokwium ze wstępu do informatyki, I rok Mat. (Ściśle tajne przed godz. 10 : 15 1 grudnia 005.) 1. Program w C 1 zawiera deklaracje 1 void P1 ( int a, int b) { int i ; 3 for ( i =0;i
. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019
.. Podstawy Programowania 2 Drzewa bst - część druga Arkadiusz Chrobot Zakład Informatyki 12 maja 2019 1 / 39 Plan.1 Wstęp.2 Wyszukiwanie w BST Minimalny i maksymalny klucz Wskazany klucz.3.4 Zmiany w
Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy
1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com
1. 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