Struktury dynamiczne
|
|
- Jarosław Małek
- 6 lat temu
- Przeglądów:
Transkrypt
1 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). Sposób definicji komponentów struktur związany jest z funkcjonalnościami i przeznaczeniem struktur. Poniżej znajdują się opisy implementacji struktur dynamicznych, jak również fragmenty kodów w języku c z podstawowymi działaniami w poszczególnych przypadkach.
2 Lista jednokierunkowa Lista jednokierunkowa zawiera pewne dane (elementy listy) tak jak struktura, oraz wskaźnik na następny element listy. Ostatni element listy jednokierunkowej posiada wskaźnik ustawiony na. Dostęp do listy umożliwia wskaźnik ustawiony na pierwszy element listy. Przeglądanie listy i pobieranie jej elementów (wstawianie tam wartości) możliwe jest dzięki operatorowi wskaźnikowemu ->. start next (1) (2) (3) (N) struct lista_jednokierunkowa { typ dana1; typ dana2;... typ danan; struct lista_jednokierunkowa *next; ;
3 Lista jednokierunkowa Przykład: 1. Zdefiniowanie struktury. struct list_element { int data1; int data2; struct list_element *next; ; 2. Deklaracja wskaźników typu strukturalnego (takiego jak element listy) i ustawienie ich tymczasem na : struct list_element *start=, *pointer=;
4 Lista jednokierunkowa 3. Dynamiczne przydzielenie pamięci dla struktury i ustawienie wskaźnika start na tym obszarze pamięci czyli na tym pierwszym elemencie listy: start = malloc ( sizeof (struct list_element) ); start 4. Ustawienie wskaźnika next na gdyż struktura ta jest jednocześnie ostatnim elementem listy. start->next = ; 5. Przy okazji nadamy wartości polom w pierwszym elemencie listy start->data1 = 100; start->data2 = 100;
5 Lista jednokierunkowa Bieżący stan start 6. Utworzenie następnego elementu listy, dynamicznie. Tym razem ustawimy na ten obszar pamięci wskaźnik pointer. pointer = malloc ( sizeof (struct list_element) ); Po tej operacji sytuacja wygląda następująco: dwa elementy listy jeszcze ze sobą nie skojarzone: pointer start
6 Lista jednokierunkowa 7. Następnie nadamy wartosci polom elemntowi listy, pokazywanemu wskaźnikiem pointer ale, co najważniejsze, połączymy elementy ze sobą w listę dwuelementową pointer->data1 = 200; pointer->data2 = 200; pointer->next = start; //!! po tych operacjach sytuacja wygląda następująco pointer start next 8. Na koniec ustawiamy wskaźnik start na początku listy i kończymy tym samym dodanie nowego elementu na początek listy. start=pointer; Na koniec sytuacja wygląda następująco: pointerstart next
7 Lista jednokierunkowa Teraz wypiszemy wartości elementów listy, poruszając się po elementach listy przy pomocy zdefiniowanych wcześniej wskaźników: while (pointer!= 0){ printf( dana1 = %d, dana2 = %d\n, \ pointer->dana1, pointer->dana2); pointer=pointer->next; //!! Wynik działania będzie następujący (dla przykładowej listy wcześniej zdefiniowanej, dwuelementowej): dana1 = 200, dana2 = 200 dana1 = 100, dana2 = 100
8 Lista jednokierunkowa - przyklad #include <stdio.h> #include <stdlib.h> //deklaracja elementu listy jednokier struct onedir { int data1; int data2; struct onedir *next; ; int main (){ 10 //deklaracja wskaznika do pierwsz. elementu listy i alokacja struct onedir *start; start = (struct onedir*)malloc(sizeof (*start) ); //ustawienie wskaznika next na bo to ostatni(!) elem. listy //kolejne elementy bedziemy wstawiac do listy na poczatek, nie na koniec start >next=; start >data1 = 100; 20 start >data2 = 100; //nastepny element listy, //ale bedzie on (pozniej) w kolejnosci pierwszy struct onedir *pointer; pointer = (struct onedir*)malloc(sizeof (*pointer) ); pointer >data1=200; pointer >data2=200; //ustawienie wskaznika elementu na elemencie nastepnym 30 pointer >next=start;
9 //ustawimy wskaznik start na pocztaku listy //w tym momencie obydwa wskazniki (pointer oraz start) //pokazuja na poczatek listy czyli na pierwszy element start=pointer; //nastepny element listy, chwilowo "niezlokalizowany" //ale za chwile ustawimy go na poczatku //"przesuwajac" pozostale 40 pointer = (struct onedir*)malloc(sizeof (*pointer) ); pointer >data1=300; pointer >data2=300; //ustawienie wskaznikow; jakby ustawienie elementu listy //na poczatku listy pointer >next=start; start=pointer; //wypisanie pol wszystkich elementow listy 50 //petla leci po elementach listy zaczynajac od poczatku listy printf ("\n elementy listy struktur:\n\n"); while (pointer!= 0){ printf (" data1 = %d; data2 = %d\n",pointer >data1, pointer >data2); pointer=pointer >next; printf ("\n\n"); return 0; 60
10 Wynik dzialania elementy listy struktur: data1 = 300; data2 = 300 data1 = 200; data2 = 200 data1 = 100; data2 = 100
11 Lista dwukierunkowa Lista dwukierunkowa zawiera pewne dane (elementy listy) tak jak struktura, oraz dwa wskaźniki: jeden pokazujący na następny element listy oraz drugi - na poprzedni element listy. Wskaźnik na następny element listy ostatniego elementu listy dwukier. jest ustawiany na, i podobnie, wskaźnik pierwszego elementu listy na element poprzedni jest ustawiany na. Przeglądanie listy dwukierunkowej może się odbywać zarówno od początku, za pomocą wskaźnika ustawionego na pierwszym elemencie (tutaj wskaźnik o nazwie start) jak też od końca za pomocą wskaźnika ustawionego na ostatnim elemencie listy. Podobnie jak w przypadku listy jednokierunkowej przeglądanie listy i pobieranie jej elementów (wstawianie tam wartości) możliwe jest dzięki operatorowi wskaźnikowemu ->. start next N pre pre (1) (2) (3) (N) struct lista_dwukierunkowa { typ dana1; typ dana2;... typ danan; struct lista_dwukierunkowa *next, *prev; ;
12 Lista dwukierunkowa Przykład: 1. Zdefiniowanie struktury. struct twodir_element { int data1; int data2; struct twodir_element *next, *prev; ; 2. Deklaracja wskaźników typu strukturalnego (takiego jak element listy) i ustawienie ich tymczasem na : struct twodir_element *start=, *pointer=;
13 Lista dwukierunkowa 3. Dynamiczne przydzielenie pamięci dla dwóch elementów strukturalnych (dwóch elementów listy) i ustawienie wskaźników: start = malloc ( sizeof (struct twodir_element) ); start->data1=100; start->data2=100; start->next=; start->prev=; pointer = malloc ( sizeof (struct twodir_element) ); pointer->data1=200; pointer->data2=200; pointer->next=; pointer->prev=; pointer start
14 Lista dwukierunkowa 4. Połączenie elementów listy poprzez odpowiednie ustawienie wskaźników next oraz prev. Wskaźnik start trzeba ustawić na początku listy, zaś pointer zostanie usunięty. Wcześniej wyświetlimy też listę tzn. pola jej elementów. pointer->next=start; start->prev=pointer; start=pointer; while(pointer!= 0) { printf( %d %d\n,wsk->data1, wsk->data2); pointer=pointer->next; free(pointer); Obraz końcowej sytuacji start
15 Lista dwukierunkowa Następny przykład: trzy elementy listy (obraz po zbudowaniu listy) pointer i usunięcie drugiego elementu (obraz po usunięciu drugiego elementu). start Poniżej pełny program.
16 Lista dwukierunkowa - pełny przykład #include <stdio.h> #include <stdlib.h> //deklaracja elementu listy dwukierunkowej struct twodir{ int data1; int data2; struct twodir *prev, *next; ; int main(){ //pierwszy element listy struct twodir *start; start = (struct twodir*)malloc(sizeof(*start)); start >data1 = 100; start >data2 = 100; start >next=; start >prev=; 10 //drugi elem. listy 20 struct twodir *pointer; pointer = (struct twodir*)malloc(sizeof(*pointer)); pointer >data1=200; pointer >data2=200; pointer >prev=; pointer >next=; //trzeci elem. listy struct twodir *pointer2; pointer2 = (struct twodir*)malloc(sizeof(*pointer)); 30 pointer2 >data1=300;
17 pointer2 >data2=300; pointer2 >prev=; pointer2 >next=; //Polaczenie elementow listy. //Pierwszy element trzeba ustawic na poczatku listy. //Czyli najpierw ma byc 100, pozniej 200 a pozniej 300 //(od lewej do prawej) start >next=pointer; 40 pointer >prev=start; pointer >next=pointer2; pointer2 >prev=pointer; //wypisanie elementow listy: //utworzymy pomocniczy wskaznik, aby pozniej // nie przesuwac wstecz wskaznikow. //ustawimy go na poczatku listy i nim bedziemy sie poslugiwac // przy wypisywaniu. 50 //pozostale wskazniki pozostaja nietkniete struct twodir *temp; // tu nie ma alokacji, nie potrzeba! temp=start; printf ("\n elementy listy, wierszami, przed usunieciem elem. drugiego:\n"); while ( temp!= 0 ){ printf (" data1 = %d, data2 = %d\n",temp >data1,temp >data2); temp=temp >next; printf ("\n\n"); 60 //usuniecie drugiego elementu i polaczenie pierwszego z trzecim pointer >next=; pointer >prev=; start >next=; pointer2 >prev=; free(pointer);
18 start >next=pointer2; pointer2 >prev=start; //wypisanie elementow listy przy pomocy wskaznika temp 70 temp=start; printf ("\n elementy listy, wierszami, po usunieciu elem. drugiego:\n"); while ( temp!= 0 ){ printf (" data1 = %d, data2 = %d\n",temp >data1,temp >data2); temp=temp >next; printf ("\n\n"); return 0; 80 elementy listy, wierszami, przed usunieciem elementu drugiego: data1 = 100, data2 = 100 data1 = 200, data2 = 200 data1 = 300, data2 = 300 elementy listy, wierszami, po usunieciu elementu drugiego: data1 = 100, data2 = 100 data1 = 300, data2 = 300
19 Listy cykliczne Lista dwukierunkowa cykliczna charakteryzuje się tym, że wskaźnik na następny element w ostatnim elemencie nie ma wartości ale pokazuje na początek listy. W przypadku listy cyklicznych dwukierunkowych wskaźnik na poprzedni element w pierwszym elemencie listy pokazuje na element ostatni, zaś wskaźnik elementu ostatniego pokazuje na pierwszy element tej listy. Jednakw przypadku list cyklicznych raczej nie mówi się o początku i końcu, choć często pierwszy element takiej listy wynika z kontekstu i zawartości danych struktury. Pozycję na liście wskazuje zewnętrzny wskaźnik, którego położenie może się dowolnie zmieniać, wówczas trzeba określić jakiś dodatkowy warunek na zakończenie pętli po elementach listy. pointer next next next xt (1) (2) (3) (N) pointer pre next pr xt (1) (2) (3) (N)
20 Stosy Stos jest kolejką typu LIFO (ang. Last In First Out), tzn. elementy położone jako ostatnie są zdejmowane jako pierwsze. Domyślamy się, że mamy zatem np. w przypadku list, szybko dostęp do takiego elementu za pomocą wskaźnika. W przypadku stosu taki wskaźnik nazywany jest wskaźnikiem stosu i konsekwentnie pokazuje na ostatnio dołożony element (pierwszy na górze, na szczycie stosu) Ze stosu zdejmujemy ostatnio dołożony element. Stos może też być zaimplementowany jako tablica jednowymiarowa. Musimy wtedy zaopatrzyć nasze procedury w jakiś sposób identyfikacji ostatnio wprowadzonego elementu do tablicy (indeksu ostatniego elementu, odpowiedniego licznika). Stos w formie tablicy musi zapewnić poprawne wykonanie przynajmniej dwóch funkcji push() - położenie elementu na stosie (w tablicy - dołożenie elementu do tablicy i zwiększenie dynamiczne rozmiaru tablicy o jeden element), oraz pop() - zdjęcie ostatniego elementu z listy (w tablicy - usunięcie ostatniego elementu tablicy i skrócenie tablicy o jeden element). W przypadku implementacji listowej, szczyt stosu znajduje się na początku listy, zaś nowe elementy dokładane są do początku listy. Usuwanie elementów odbywa się od wierzchołka stosu.
21 Stos 1. definicja elementów stosu (tutaj trzech). Bez połączenia, tymczasem. pierwszy = malloc (sizeof(*pierwszy)); pierwszy->data1=100; pierwszy->next=; drugi = malloc (sizeof(*drugi)); drugi->data1=200; drugi->next=; trzeci = malloc (sizeof(*trzeci)); trzeci->data1=300; trzeci->next=; 2. Połączenie elem. stosu pierwszy->next=drugi; drugi->next=trzeci; //ustawienie wskaźnika stosu: wsk_stosu=pierwszy;
22 Stos Stos wygląda tak (można też narysować w pionie ) wsk. stosu pierwszy drugi trzeci 3. zdjęcie elementu ze stosu (zgodnie z zasadą LIFO). To operacja podobna do działania funkcji pop(). wsk_stosu=drugi; pierwszy->next=; free(pierwszy); wsk. stosu drugi trzeci
23 Stos 4. Dołożenie elementu do stosu, w przypadku stosu - zawsze na początek (na szczyt stosu), tak jak w funkcji push(). czwarty = malloc (sizeof(*czwarty)); czwarty->data1=400; czwarty->next=; czwarty->next=drugi; //ustawienie wskaźnika stosu na szczycie stosu wsk_stosu=czwarty; wsk. stosu (pierwszy) drugi trzeci
24 Stos - pełny przykład #include <stdio.h> #include <stdlib.h> //deklaracja elementu stosu; struct stos { int data1; struct stos *next; ; int main (){ 10 //zaalokowanie 3 elementów stosu struct stos *pierwszy; pierwszy = (struct stos*)malloc(sizeof (*pierwszy) ); pierwszy >data1=100; pierwszy >next=; struct stos *drugi; drugi = (struct stos*)malloc(sizeof (*drugi) ); 20 drugi >data1=200; drugi >next=; struct stos *trzeci; trzeci = (struct stos*)malloc(sizeof (*trzeci) ); trzeci >data1=300; trzeci >next=; //polaczenie elemetow stosu pierwszy >next=drugi; 30 drugi >next=trzeci;
25 //wskaznik stosu i ustawienie go na pierwszym elemencie struct stos *wsk stosu; wsk stosu=pierwszy; //wypisanie pol wszystkich elementow stosu printf ("\n elementy stosu przed zdjeciem jednego elementu:\n"); while (wsk stosu!= 0){ printf (" data1 = %d;\n",wsk stosu >data1); 40 wsk stosu=wsk stosu >next; printf ("\n\n"); //zdjecie elementu ze stosu zgodnie z regula LIFO //czyli zdjecie nawyjzej polozonego elementu, pierwszego wsk stosu=drugi; pierwszy >next=; free(pierwszy); printf ("\n elementy stosu po zdjeciu pierwszego elementu:\n"); 50 while (wsk stosu!= 0){ printf (" data1 = %d;\n",wsk stosu >data1); wsk stosu=wsk stosu >next; printf ("\n\n"); //nastepnie dodanie kolejnego elementu na wierzch stosu, //czyli na poczatek listy struct stos *czwarty; czwarty = (struct stos*)malloc(sizeof (*czwarty) ); 60 czwarty >data1=400; czwarty >next=; czwarty >next=drugi; wsk stosu=czwarty;
26 printf ("\n elementy stosu po dodaniu czwartego elementu:\n"); while (wsk stosu!= 0){ printf (" data1 = %d;\n",wsk stosu >data1); wsk stosu=wsk stosu >next; 70 printf ("\n\n"); return 0; elementy stosu przed zdjeciem jednego elementu: data1 = 100; data1 = 200; data1 = 300; elementy stosu po zdjeciu pierwszego elementu: data1 = 200; data1 = 300; elementy stosu po dodaniu czwartego elementu: data1 = 400; data1 = 200; data1 = 300;
27 Kolejka Kolejka jest strukturą danych typu FIFO (ang. First In First Out), czyli pierwszy element jest zdejmowany jako pierwszy, w przeciwieństwie do stosu. Implementowana jest przy pomocy listy jednokierunkowej przy udziale dwóch wskaźników: jeden pokazuje na początek kolejki (na pierwszy element) zaś drugi - na koniec (na ostatni element). Elementy dopisywane są zawsze na koniec kolejki z przesunięciem wskaźnika. Zaś pobierane są zawsze z początku listy (z początku kolejki). start next next next xt (1) (2) (3) (N) struct que { int data1; int data2; struct que *next; ;
28 Kolejka 1. definicja elementów kolejki (tutaj trzech). Bez połączenia, tymczasem. struct que *pierwszy; struct que *drugi; struct que *trzeci; pierwszy = malloc (sizeof(*pierwszy)); pierwszy->data1=100; pierwszy->data2=100; pierwszy->next=; drugi = malloc (sizeof(*drugi)); drugi->data1=200; drugi->data2=200; drugi->next=; trzeci = malloc (sizeof(*trzeci)); trzeci->data1=300; trzeci->data2=300; trzeci->next=;
29 Kolejka 2. Połączenie elem. kolejki pierwszy->next=drugi; drugi->next=trzeci; //ustawienie wskaźnikow kolejki: struct stos *start; struct stos *end; start=pierwszy; end=trzeci; start next next next pierwszy drugi trzeci
30 Kolejka 3. Zdjęcie pierwszego elementu kolejki i dodanie czwartego elementu (na zasadzie FIFO) start=drugi; pierwszy->next=; free(pierwszy); struct que *czwarty; czwarty = malloc (sizeof(*czwarty)); czwarty->data1=400; czwarty->data2=400; czwarty->next=; pierwszy i) i (czwa
31 Kolejka - pełny przykład #include <stdio.h> #include <stdlib.h> //deklaracja elementu kolejki; struct que { int data1; int data2; struct que *next; ; int main (){ 10 //zaalokowanie 3 elementów kolejki struct que *pierwszy; pierwszy = (struct que*)malloc(sizeof (*pierwszy) ); pierwszy >data1=100; pierwszy >data2=100; pierwszy >next=; struct que *drugi; 20 drugi = (struct que*)malloc(sizeof (*drugi) ); drugi >data1=200; drugi >data2=200; drugi >next=; struct que *trzeci; trzeci = (struct que*)malloc(sizeof (*trzeci) ); trzeci >data1=300; trzeci >data2=300; trzeci >next=; 30
32 //polaczenie elemetow kolejki pierwszy >next=drugi; drugi >next=trzeci; //wskazniki kolejki struct que *start, *end; start=pierwszy; end=trzeci; //? end nie wydaje sie potrzebny //wypisanie pol wszystkich elementow kolejki //przed zmianami w kolejce printf ("\n elementy kolejki przed zdjeciem jednego elementu:\n"); while (start!= 0){ printf (" data1 = %d, data2 = %d;\n",start >data1,start >data2); start=start >next; printf ("\n\n"); 40 //usuniecie elementu z kolejki zgodnie z regula FIFO 50 //czyli zdjecie pierwszego elementu start=drugi; pierwszy >next=; free(pierwszy); printf ("\n elementy kolejki po usunieciu pierwszego elementu:\n"); while (start!= 0){ printf (" data1 = %d, data2 = %d;\n",start >data1,start >data2); start=start >next; printf ("\n\n"); 60 //nastepnie dodanie kolejnego elementu na koniec kolejki struct que *czwarty; czwarty = (struct que*)malloc(sizeof (*czwarty) ); czwarty >data1=400; czwarty >data2=400;
33 czwarty >next=; trzeci >next=czwarty; end=czwarty; //? end nie wydaje sie potrzebny 70 printf ("\n elementy kolejki po dodaniu czwartego elementu:\n"); start=drugi; // trzeba z powrotem ustawic na poczatku while (start!= 0){ printf (" data1 = %d, data2 = %d;\n",start >data1,start >data2); start=start >next; printf ("\n\n"); return 0; 80 elementy kolejki przed zdjeciem jednego elementu: data1 = 100, data2 = 100; data1 = 200, data2 = 200; data1 = 300, data2 = 300; elementy kolejki po usunieciu pierwszego elementu: data1 = 200, data2 = 200; data1 = 300, data2 = 300; elementy stosu po dodaniu czwartego elementu: data1 = 200, data2 = 200; data1 = 300, data2 = 300; data1 = 400, data2 = 400;
34 Drzewo Drzewo jest strukturą danych hierarchiczną i (najczęściej) rekurencyjną. Struktury nazywane są węzłami drzewa (ang. node). Drzewa dzielą się na drzewa mnogościowe (każdy węzęł może mieć dowolną ilość potomków nazywanych dziećmi) lub tylko dwóch (w takim przypadku mówimy o drzewach binarnych).
35 Drzewo Specjalny wskaźnik umożliwia dostęp do całego drzewa, ustawiany jest na węźle praoujcu, który nie ma żadnych rodziców, nazywany jest on root czyli korzeń. Jeśli węzęł nie ma któregoś z potomków wówczas wskaźnik next ustawiany jest na. Algorytmy operujące na drzewach oparte są najczęściej o rozwiązania rekurencyjne gdyż każdy węzeł może być traktowany jako osobny rodzic a więc od niego może się teoretycznie zaczynać kolejne drzewo. Typowe algorytmy: wstawianie nowego węzła w jakimś miejscu (na końcu, w środku), usuwanie węzłów i usuwanie całego drzewa, przeszukiwanie drzewa (różne warianty).
36 Rekurencja - przykład #include <stdio.h> //rekurencyjna funkcja obliczajaca silnie long silnia( long n ) { if ( n <= 1 ) return 1; else { return (n * silnia( (n 1) )); int main (){ 10 long ile = 10; long wynik; long i=1; printf("\n\n"); while (i <= 10){ wynik = silnia(i); printf(" %10ld! = %10ld\n",i,wynik); 20 i++; printf("\n\n"); return 0;
37 Drzewo - przykład #include <stdio.h> #include <stdlib.h> #include <time.h> //deklaracja wezla (nodu ) czyli elem. drzewa binarnego; struct node { int data1; struct node *left, *right, *up; ; //funkcja tworzaca nody (wezly) w drzewie //Jako wartosc w polu data1 zostanie wstawiony //podany parametr ile struct node* add node(struct node *new, int ile){ 10 //inicjalizacja wezla i ustawienie wskaznikow na //utworzenie wskaznika pomocniczego do nodu struct node *helper, *which; which = (struct node*)malloc(sizeof (*which) ); which >left = which >right = ; 20 which >data1 = ile; helper = new; // jesli nie bylo zadnego korzenia to mamy nowe drzewo // i nasz nowy nod jest wtedy rootem if (!helper) {new = which; else{ // Petla nieskonczona // W zaleznosci od klucza idziemy do lewego lub 30 // prawego syna, o ile takowy istnieje
38 while(1){ if (ile < helper >data1) { if (!helper >left){ helper >left = which; break; else helper=helper >left; else{ 40 if (!helper >right){ helper >right = which; break; else helper=helper >right; which >up = helper; 50 return which; void rmtree(struct node *tree){ if (tree) { rmtree(tree >left); rmtree(tree >right); rmtree(tree >up); free(tree); 60 int main (){
39 //wskaznik do nodu, //alokacje pamieci zapewnia funkcja add node struct node *root = ; int i, k, ile; 70 //liczba nodow, granicznie moze byc nawet tylko jeden ile = 10; srand(time()); for(i = 0; i < ile; i++){ //liczby losowe 1 9. Takie umiescimy w wezlach //i na podstawie wartosci tych liczb rozmiescimy //kolejne nody w odpowiedni sposob k = 1 + rand() % 9; 80 root = add node(root,k); //usuniecie drzewa rmtree(root); return 0; 90
INFORMATYKA. 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ółowoDynamiczny 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ół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ółowoALGORYTMY 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/
Bardziej szczegółowoAlgorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych
Algorytmy i Struktury Danych Wykład IV Sortowania cd. Elementarne struktury danych 1 Co dziś? Dolna granica sortowań Mediany i statystyki pozycyjne Warstwa implementacji Warstwa abstrakcji #tablice #listy
Bardziej szczegół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ół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ół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ół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ół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ół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ół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ół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ółowoWykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy
Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element
Bardziej szczegół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ół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ółowoAbstrakcyjne struktury danych - stos, lista, drzewo
Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą
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ół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ół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ół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ółowoWstęp do programowania
Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie
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ółowoProgramowanie i struktury danych 1 / 44
Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje
Bardziej szczegół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ół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ółowoProgramowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... 22 XI 2011 Uwaga! Ponieważ już sobie powiedzieliśmy np. o wskaźnikach i referencjach, przez które nie chcemy przegrzebywać
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ół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ół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ół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ół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ółowoObliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303
Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp
Bardziej szczegółowoDynamiczny przydział pamięci (język C) Dynamiczne struktury danych. Sortowanie. Klasyfikacja algorytmów sortowania. Algorytmy sortowania
Rok akademicki 2010/2011, Wykład nr 4 2/50 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2010/2011
Bardziej szczegółowoWYKŁ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
Bardziej szczegółowoTeoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,
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ół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ół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ółowoWysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Bardziej szczegółowoWskaź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
Bardziej szczegółowoPodstawy 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
Bardziej szczegółowoRekurencja. 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
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ół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ółowo. 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
Bardziej szczegółowoProgramowanie obiektowe i C++ dla matematyków
Programowanie obiektowe i C++ dla matematyków Bartosz Szreder szreder (at) mimuw... X 0 Typy złożone Oczywiście w C++ możemy definiować własne typy złożone (struktury i klasy), tak jak w Pascalu poprzez
Bardziej szczegółowoWyszukiwanie 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()
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ół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ół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ółowoDrzewa wyszukiwań binarnych (BST)
Drzewa wyszukiwań binarnych (BST) Krzysztof Grządziel 12 czerwca 2007 roku 1 Drzewa Binarne Drzewa wyszukiwań binarnych, w skrócie BST (od ang. binary search trees), to szczególny przypadek drzew binarnych.
Bardziej szczegół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ółowoTeoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 5b: Model danych oparty na listach http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Listy należą do najbardziej
Bardziej szczegółowoLaboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w
Bardziej szczegółowoJak napisać listę jednokierunkową?
Lista jednokierunkowa jest strukturą o dynamicznie zmieniającej się wielkości. Listę można opisać jako uszeregowany zbiór elementów. Każdy element zawiera jakieś dane oraz wskazuje na swojego następcę.
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ółowoWskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
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ół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ół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ółowo. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016
.. Podstawy Programowania 2 Drzewa bst - część pierwsza Arkadiusz Chrobot Zakład Informatyki 22 maja 2016 1 / 55 Plan.1 Wstęp.2 Definicje.3 Implementacja Typ bazowy i wskaźnik na korzeń Dodawanie elementu
Bardziej szczegółowoPodstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują
Bardziej szczegółowoPorządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Bardziej szczegół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ółowoWstęp. #define include include include include include include
1 FW WSTĘP 1 1. Wstęp. Przedstawiany tu program po wczytaniu tekstu ze standardowego wejścia wypisuje uporządkowaną alfabetycznie listę słów wraz z liczbą ich wystąpień w podanym tekście. Przez słowo rozumiemy
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ółowododatkowe operacje dla kopca binarnego: typu min oraz typu max:
ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu
Bardziej szczegółowo. Podstawy Programowania 2. Dwukierunkowa lista liniowa. Arkadiusz Chrobot. 7 kwietnia 2019
.. Podstawy Programowania 2 Dwukierunkowa lista liniowa Arkadiusz Chrobot Zakład Informatyki 7 kwietnia 2019 1 / 55 Plan.1 Wstęp.2 Typ bazowy i wskaźnik listy Tworzenie listy Dodawanie elementu do listy
Bardziej szczegółowoJęzyki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
Bardziej szczegółowoAlgorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne
Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może
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ółowoINFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227
INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Liniowe struktury danych - Lista uporzadkowana. Wartownicy. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD)
Bardziej szczegół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ółowoProgramowanie obiektowe
Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2015 1 / 21 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań
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ół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ół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ółowoPrzykładowe B+ drzewo
Przykładowe B+ drzewo 3 8 1 3 7 8 12 Jak obliczyć rząd indeksu p Dane: rozmiar klucza V, rozmiar wskaźnika do bloku P, rozmiar bloku B, liczba rekordów w indeksowanym pliku danych r i liczba bloków pliku
Bardziej szczegółowoLista 5 Typy dynamiczne kolejka
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Metody i języki programowania 1 Wprowadzenie Lista 5 Typy dynamiczne kolejka Kolejka jest jedną z podstawowych struktur umożliwiających
Bardziej szczegółowoTemat: Dynamiczne liniowe struktury danych - stos, kolejka, lista. 1. Wady i zalety struktury tablicy
Temat: Dynamiczne liniowe struktury danych - stos, kolejka, lista. 1. Wady i zalety struktury tablicy Wady ograniczony rozmiar maksymalny konieczno okrelenia stałego rozmiaru tablicy statyczna alokacja
Bardziej szczegółowoStruktury czyli rekordy w C/C++
Struktury czyli rekordy w C/C++ Wprowadzenie do programowania w języku C struktury. pola bitowe, unie Struktury (rekordy) są złożonymi zmiennymi, składającymi się z elementów różnych typów zwanych polami,
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu
Bardziej szczegółowoWykł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
Bardziej szczegółowoAlgorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Liniowe struktury danych - Lista Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
Bardziej szczegółowoWskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Bardziej szczegółowoKURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Bardziej szczegółowoPodstawy programowania 2. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 2 Podstawy programowania 2 Temat: Zmienne dynamiczne tablica wskaźników i stos dynamiczny Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny 1.1 Tablice wskaźników Tablice
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ół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ółowoMarcin Matusiak i Łukasz Stasiak
Marcin Matusiak i Łukasz Stasiak Lista jest sekwencyjną strukturą danych, która składa się z ciągu elementów tego samego typu. Dostęp do elementów listy jest sekwencyjny tzn. z danego elementu listy możemy
Bardziej szczegółowoTeoretyczne podstawy informatyki
Teoretyczne podstawy informatyki Wykład 6b: Model danych oparty na drzewach http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Model danych oparty na drzewach
Bardziej szczegółowo. Podstawy Programowania 2. Jednokierunkowa lista liniowa. Arkadiusz Chrobot. 28 marca 2017
.. Podstawy Programowania 2 Jednokierunkowa lista liniowa Arkadiusz Chrobot Zakład Informatyki 28 marca 2017 1 / 57 Plan.1 Jednokierunkowa lista liniowa.2 Implementacja Typ bazowy i wskaźnik listy Tworzenie
Bardziej szczegółowoParadygmaty programowania. Paradygmaty programowania
Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoDrzewa poszukiwań binarnych
1 Drzewa poszukiwań binarnych Kacper Pawłowski Streszczenie W tej pracy przedstawię zagadnienia związane z drzewami poszukiwań binarnych. Przytoczę poszczególne operacje na tej strukturze danych oraz ich
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ółowo