Podstawy programowania wykład
|
|
- Maria Łukasik
- 7 lat temu
- Przeglądów:
Transkrypt
1 Podstawy programowania wykład Piotr Nowak 1 Instytut Badań Systemowych PAN 1 pnowak@ibspan.waw.pl Piotr Nowak (IBS PAN) Podstawy programowania wykład 1 / 14
2 Program wyk adu Deklaracja drzewa binarnego De nicja drzewa BST Wstawianie i usuwanie elementów z drzewa BST Porz ¾adki zwi ¾azane z drzewem BST ( porz ¾adek inorder, preorder i post order) Minimum i maksimum w drzewie BST Drukowanie drzewa BST Wzbogacanie drzewa BST Ranga elementu PN () Podstawy programowania 05/08 2 / 37
3 Deklaracja drzewa binarnego Do deklaracji drzewa stosujemy struktury. /*Drzewo binarne elementów typu char*/ struct element char val; struct element *left,*right; ; Aby skrócić zapis kodów w dalszej cz ¾eci wyk adu, u zyjemy polecenia typedef: typedef struct element char val; struct element *left,*right; elem; PN () Podstawy programowania 05/08 3 / 37
4 De nicja drzewa BST De nicja Drzewem BST (Binary Search Tree) nazywamy drzewo binarne, spe niajace ¾ nastepujac ¾a¾ w asno sć: W ka zdym poddrzewie element w weźle ¾ jest wiekszy ¾ od wszystkich elementów z jego lewego poddrzewa i mniejszy od wszystkich elementów z jego prawego poddrzewa. PN () Podstawy programowania 05/08 4 / 37
5 Wstawianie elementów do drzewa BST void insert(elem **L,char x) elem *p; if((*l)==null) assert(p=(elem*)malloc(sizeof(elem))); p->left=p->right=null; p->val =x; *L=p; if((*l)->val>x) insert(&((*l)->left),x); if((*l)->val<=x) insert(&((*l)->right),x); PN () Podstawy programowania 05/08 5 / 37
6 Usuwanie elementów z drzewa BST void remove(elem **L) /*usuwanie korzenia*/ elem *k=*l; if(*l!=null) if((*l)->right==null) (*L)=(*L)->left; if((*l)->left==null) (*L)=(*L)->right; k=(*l)->left; while(k->right!=null) k=k->right; k->right=(*l)->right; k=*l; (*L)=(*L)->left; free(k); PN () Podstawy programowania 05/08 6 / 37
7 Usuwanie elementów z drzewa BST void nd_and_remove(elem**l,char x) /*usuwanie elementu x*/ elem *p=null,*k=*l; while(k!=null) if(k->val==x) break; p=k; if(k->val<x) k=k->right; k=k->left; if(k!=null&&k->val==x) if(k==*l) remove(l); if(k==p->left) remove(&(p->left)); remove(&(p->right)); if(*l!=null) printf("there is no such element!nn"); printf("the tree is empty!nn"); PN () Podstawy programowania 05/08 7 / 37
8 Wyszukiwanie w drzewie BST Wersja iteracyjna int searchiter(elem *l,char x) int temp=0; while(l!=null) if((l->val)==x) temp=1; l=null; if((l->val)>x) l=l->left; l=l->right; return temp; PN () Podstawy programowania 05/08 8 / 37
9 Wyszukiwanie w drzewie BST Wersja rekurencyjna int searchrek(elem *l,char x) if(l==null) return 0; if(l->val==x) return 1; if(l->val>x) return searchrek(l->left,x); return searchrek(l->right,x); PN () Podstawy programowania 05/08 9 / 37
10 Porz ¾adki zwi ¾azane z drzewem BST Porz ¾adek inorder void inorder(elem *l) inorder(l->left); printf("%c, ",l->val); inorder(l->right); PN () Podstawy programowania 05/08 10 / 37
11 Porz ¾adki zwi ¾azane z drzewem BST Porz ¾adek preorder void preorder(elem *l) printf("%c, ",l->val); preorder(l->left); preorder(l->right); PN () Podstawy programowania 05/08 11 / 37
12 Porz ¾adki zwi ¾azane z drzewem BST Porz ¾adek postorder void postorder(elem *l) postorder(l->left); postorder(l->right); printf("%c, ",l->val); PN () Podstawy programowania 05/08 12 / 37
13 Minimum i maksimum w drzewie BST Wyszukiwanie adresu elem* ndmin(elem *l) while(l->left!=null) l=l->left; return l; elem* ndmax(elem *l) while(l->right!=null) l=l->right; return l; PN () Podstawy programowania 05/08 13 / 37
14 Minimum i maksimum w drzewie BST Wyszukiwanie wartości char ndminval(elem *l) return ( ndmin(l))->val; return $ ; char ndmaxval(elem *l) return ( ndmax(l))->val; return $ ; PN () Podstawy programowania 05/08 14 / 37
15 Drukowanie drzewa BST void print(elem *l,int s) int i; print(l->right,s+1); for(i=0;i<s;i++) printf( ); printf("%c",l->val); printf("nn"); print(l->left,s+1); PN () Podstawy programowania 05/08 15 / 37
16 Deklaracja wzbogaconego drzewa BST Drzewo BST wzbogacamy o liczb ¾e dzieci. struct wezel char litera; int dzieci; struct wezel *left, *right; ; PN () Podstawy programowania 05/08 16 / 37
17 Ranga elementu int ranga(struct wezel *p,char zn) int pom=0, aga=0; while(p!=null) if((p->litera)==zn) if((p->left)!=null) pom=pom+((p->left)->dzieci); p=null; aga=1; if((p->litera)>zn) p=p->left; if((p->left)!=null) pom=pom+((p->left)->dzieci); pom = pom+1; p=p->right; if( aga) return pom; return -1; PN () Podstawy programowania 05/08 17 / 37
18 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<time.h> #define N 12 typedef struct element char val; struct element *left,*right; elem ; void insert(elem**,char); void inorder(elem*); void preorder(elem*); void postorder(elem*); void print(elem*,int); void clean(elem**); int searchrek(elem*,char); int searchiter(elem*,char); int heigth(elem*); elem* findmin(elem*); char findminval(elem*); elem* findmax(elem*); char findmaxval(elem*); void remove(elem**); void find_and_remove(elem**,char); int main(void) elem *root=null; char t[n]='k','d','a','e','p','m','z','s','t','v','b','c'; int i=0,j,temp,l; print(root,0); for(i=0;i<n;i++) insert(&root,t[i]); printf("elements of tree: ");inorder(root); printf("\n\n"); printf("elements of tree (preorder): ");preorder(root); printf("\n\n"); printf("elements of tree (postorder): ");postorder(root); printf("\n\n"); printf("the structure of the tree:\n");print(root,0); printf("\n\n"); printf("the heigth of the tree: %d",heigth(root)); printf("\n\n"); printf("min == %c\t Max == %c",findminval(root),findmaxval(root)); printf("\n\n"); srand((unsigned)time(0)); for(i=0;i<n;i++) printf(" \n"); printf("a random element from sequence:\t"); for(j=0;j<n-i;j++)
19 printf("%c,",t[j]); printf("\n"); j=rand()%(n-i); temp=t[j]; printf("element %c chosen to be removed.\n",temp); t[j]=t[n-1-i]; printf("i remove %c:\n",temp); find_and_remove(&root,temp); printf("the structure of the tree:\n");print(root,0); printf("\n\n"); printf("elements of tree (inorder): ");inorder(root); printf("\n\n"); clean(&root); system("pause"); return 0; void insert(elem **L,char x) elem *p; if((*l)==null) assert(p=(elem*)malloc(sizeof(elem))); p->left=p->right=null; p->val =x; *L=p; if((*l)->val>x) insert(&((*l)->left),x); if((*l)->val<=x) insert(&((*l)->right),x); void print(elem *l,int s) int i; print(l->right,s+1); for(i=0;i<s;i++) printf(" "); printf("%c",l->val); printf("\n"); print(l->left,s+1); void inorder(elem *l)
20 inorder(l->left); printf("%c, ",l->val); inorder(l->right); void preorder(elem *l) printf("%c, ",l->val); preorder(l->left); preorder(l->right); void postorder(elem *l) postorder(l->left); postorder(l->right); printf("%c, ",l->val); void clean(elem **L) if(*l!=null) clean(&((*l)->left)); clean(&((*l)->right)); free(*l); *L=NULL; int searchrek(elem *l,char x) if(l==null) return 0; if(l->val==x) return 1; if(l->val>x) return searchrek(l->left,x); return searchrek(l->right,x); int searchiter(elem *l,char x) int temp=0; while(l!=null) if((l->val)==x) temp=1; l=null; if((l->val)>x) l=l->left;
21 l=l->right; return temp; int heigth(elem *l) int h1,h2; if(l==null) return 0; h1=heigth(l->left); h2=heigth(l->right); return h1>h2? h1+1: h2+1; elem* findmin(elem *l) while(l->left!=null) l=l->left; return l; elem* findmax(elem *l) while(l->right!=null) l=l->right; return l; char findminval(elem *l) return (findmin(l))->val; return '$'; char findmaxval(elem *l) return (findmax(l))->val; return '$'; void remove(elem **L) elem *k=*l; if(*l!=null) if((*l)->right==null)
22 (*L)=(*L)->left; if((*l)->left==null) (*L)=(*L)->right; k=(*l)->left; while(k->right!=null) k=k->right; k->right=(*l)->right; k=*l; (*L)=(*L)->left; free(k); void find_and_remove(elem**l,char x) elem *p=null,*k=*l; while(k!=null) if(k->val==x) break; p=k; if(k->val<x) k=k->right; k=k->left; if(k!=null&&k->val==x) if(k==*l) remove(l); if(k==p->left) remove(&(p->left)); remove(&(p->right)); if(*l!=null) printf("there is no such element!\n"); printf("empty!\n");
23 /*Autor: dr Piotr Sapiecha*/ #include<malloc.h> #include<stdio.h> #include<conio.h> struct wezel char litera; int dzieci; struct wezel *left, *right; ; void add(struct wezel * *, char); void inorder(struct wezel *); void dzieci(struct wezel *); void treeprint(struct wezel *,int); char searchk(struct wezel *,int); int searchrek(struct wezel *,char); int searchiter(struct wezel *,char); int ranga(struct wezel *,char); int wysokosc(struct wezel *); int liscie(struct wezel *); void clean(struct wezel**); int main(void) struct wezel *korzen=null; char zn; int x,i,temp; puts("podaj ciag liter zakonczony $:"); while((zn=getche())!='$') add(&korzen,zn); printf("\n\n"); treeprint(korzen,0); printf("\n"); inorder(korzen); x=korzen->dzieci; printf("\n"); printf("\nwysokosc = %d liczba lisci = %d\n", wysokosc(korzen), liscie(korzen)); printf("\n"); puts("podaj ciag liter zakonczony $:"); zn=getche(); while(zn!='$') temp=ranga(korzen,zn); if(temp!=-1) printf("\n\n"); treeprint(korzen,0); printf("ranga(%c)=%d\n\n",zn,temp); printf("\nbrak\n"); zn=getche();
24 printf("\n"); inorder(korzen); printf("\n"); dzieci(korzen); puts("\naby zakonczyc nacisnij ENTER!"); getch(); clean(&korzen); return 0; void add(struct wezel * * p, char w) if((*p)==null) (*p) = new struct wezel; (*p) -> litera = w; (*p) -> left = (*p) -> right = NULL; (*p) -> dzieci = 1; ((*p)->dzieci)++; if((*p)->litera > w) add(&((*p)->left),w); add(&((*p)->right),w); void dzieci(struct wezel *p) if(p!=null) dzieci(p->left); printf("%d,",p->dzieci); dzieci(p->right); free(p); void inorder(struct wezel *p) if(p!=null) inorder(p->left); printf("%c,",p->litera); inorder(p->right); char searchk(struct wezel *p,int k) struct wezel *l,*r; char pom; int temp;
25 if(p!=null) l=p->left; r=p->right; if(l==null && r==null) pom=p->litera; temp=(l->dzieci)+1; if(k==temp) pom=p->litera; if(k< temp) pom=searchk(l,k); if(r!=null && k>temp) pom=searchk(r,k-temp); if(k==1) pom=p->litera; if(r!=null) pom=searchk(r,k-1); return(pom); void treeprint(struct wezel *p,int k) if(p!=null) treeprint(p->right,k+1); for(int i=0;i<k;i++) printf(" "); printf("%c\n",p->litera); treeprint(p->left,k+1); int searchrek(struct wezel *p,char zn) int pom; if(p==null) pom=0; if((p->litera)==zn) pom=1; if((p->litera)>zn) pom=searchrek(p->left,zn); pom=searchrek(p->right,zn); return pom; int searchiter(struct wezel *p,char zn) int pom=0; while(p!=null) if((p->litera)==zn) pom=1; p=null; if((p->litera)>zn) p=p->left; p=p->right;
26 return pom; int ranga(struct wezel *p,char zn) int pom=0; int flaga=0; while(p!=null) if((p->litera)==zn) if((p->left)!=null) pom=pom+((p->left)->dzieci); p=null; flaga=1; if((p->litera)>zn) p=p->left; if((p->left)!=null) pom=pom+((p->left)->dzieci); pom = pom+1; p=p->right; if(flaga) return pom; return -1; int wysokosc(struct wezel *p) int a,b; if(p==null) return 0; a=wysokosc(p->left); b=wysokosc(p->right); if(a < b) return b + 1; return a + 1; int liscie(struct wezel *p) if(p==null) return 0; if(p->left == p->right) return 1; return liscie(p->left) + liscie(p->right); void clean(struct wezel **L) if(*l!=null) clean(&((*l)->left)); clean(&((*l)->right)); free(*l); *L=NULL;
27
Wykład 6. Drzewa poszukiwań binarnych (BST)
Wykład 6 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
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
Wysokość drzewa Głębokość węzła
Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.
Wykład 2. Drzewa poszukiwań binarnych (BST)
Wykład 2 Drzewa poszukiwań binarnych (BST) 1 O czym będziemy mówić Definicja Operacje na drzewach BST: Search Minimum, Maximum Predecessor, Successor Insert, Delete Struktura losowo budowanych drzew BST
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
Podstawy 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ą
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.
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
Listy, kolejki, stosy
Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:
Poprawność semantyczna
Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych
Porządek symetryczny: right(x)
Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)
Podstawy Programowania
drzewo BST #include #include #include #include "BST.h" #include "uni.h" Funkcje pomocnicze #ifndef UNI #define UNI #include #include #include
. 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
Algorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Drzewa poszukiwań binarnych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.
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/
Drzewa poszukiwań binarnych
1 Cel ćwiczenia Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet ielonogórski Drzewa poszukiwań binarnych Ćwiczenie
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 8 1 /
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
część 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych
Język ANSI C część 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych Jarosław Gramacki Instytut Informatyki i Elektroniki rekurencja wiele czynności
Algorytmy i Struktury Danych
Algorytmy i Struktury Danych Drzewa poszukiwań binarnych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych
Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:
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ą.
dr inż. Paweł Myszkowski Wykład nr 11 ( )
dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Drzewa poszukiwań binarnych 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie studentów
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
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
STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA. Część 3. Drzewa Przeszukiwanie drzew
STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA Część 3 Drzewa Przeszukiwanie drzew 1 / 24 DRZEWA (ang.: trees) Drzewo struktura danych o typie podstawowym T definiowana rekurencyjnie jako: - struktura pusta,
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 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 ======================================================================================================
Abstrakcyjne struktury danych w praktyce
Abstrakcyjne struktury danych w praktyce Wykład 13 7.4 notacja polska A.Szepietowski Matematyka dyskretna rozdział.8 stos kompilacja rozłączna szablony funkcji Przypomnienie Drzewo binarne wyrażenia arytmetycznego
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH Temat : Drzewa zrównoważone, sortowanie drzewiaste Wykładowca: dr inż. Zbigniew TARAPATA e-mail: Zbigniew.Tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/
Wykład 2. Drzewa zbalansowane AVL i 2-3-4
Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania
Stos LIFO Last In First Out
Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)
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
Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)
Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie
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()
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
Ogólne wiadomości o grafach
Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,
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
Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski
Algorytmy i struktury danych Wykład 5: Drzewa Dr inż. Paweł Kasprowski pawel@kasprowski.pl Drzewa Struktury przechowywania danych podobne do list ale z innymi zasadami wskazywania następników Szczególny
Drzewa podstawowe poj
Drzewa podstawowe poj ecia drzewo graf reprezentujacy regularna strukture wskaźnikowa, gdzie każdy element zawiera dwa lub wiecej wskaźników (ponumerowanych) do takich samych elementów; wez ly (albo wierzcho
Drzewo binarne BST. LABORKA Piotr Ciskowski
Drzewo binarne BST LABORKA Piotr Ciskowski zadanie 1. drzewo binarne - 1 Zaimplementuj drzewo binarne w postaci: klasy Osoba przechowującej prywatne zmienne: liczbę całkowitą to będzie klucz, wg którego
Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury
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
Rekurencyjne struktury danych
Andrzej Jastrz bski Akademia ETI Dynamiczny przydziaª pami ci Pami, która jest przydzielana na pocz tku dziaªania procesu to: pami programu czyli instrukcje programu pami statyczna zwi zana ze zmiennymi
Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP
Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP Danuta Szeliga AGH Kraków Drzewo Drzewo (tree) Drzewo jest hierarchiczną strukturą danych. Def. Drzewo jest to zbiór T jednego lub więcej
Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.
Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4
Wstę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
. 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
Programowanie komputerów. Jacek Lach Zakład Oprogramowania Instytut Informatyki Politechnika Śląska
Programowanie komputerów Jacek Lach Zakład Oprogramowania Instytut Informatyki Politechnika Śląska Plan Dynamiczne struktury danych Lista jednokierunkowa Lista dwukierunkowa Lista podwieszana Graf Drzewa
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
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
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
Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.
Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa
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
Podstawy programowania 1
Podstawy programowania 1 Krzysztof Grudzień kgrudzi@kis.p.lodz.pl Wykład nr 2 1 Plan spotkań Wskaźniki Tablice jednowymiarowe & wska źniki. Programowanie w C. Wikibooks 2 Co to jest wskaźnik?? Wskaźnik
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
Wykład 8. Drzewa AVL i 2-3-4
Wykład 8 Drzewa AVL i 2-3-4 1 Drzewa AVL Ø Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Ø Drzewa 2-3-4 Definicja drzewa 2-3-4 Operacje wstawiania i usuwania Złożoność
Podstawy Informatyki. Metody dostępu do danych
Podstawy Informatyki c.d. alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Bazy danych Struktury danych Średni czas odszukania rekordu Drzewa binarne w pamięci dyskowej 2 Sformułowanie
Programowanie dynamiczne, a problemy optymalizacyjne
Programowanie dynamiczne, a problemy optymalizacyjne W procesie opracowywania algorytmu programowania dynamicznego dla problemu optymalizacji wyróżniamy etapy: Etap1. Określenie właściwości rekurencyjnej,
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
Programowanie 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
Programowanie 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ć
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,
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)
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
Algorytmy sortowania w języku C. Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (Sortowanie)
emat zajęć: Algorytmy sortowania w języku C Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Sortowanie) Kolejne zadania dotyczyć będą najprostszych w realizacji algorytmów sortowania. Algorytmy sortowania
Teoretyczne 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ą,
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
EGZAMIN MAGISTERSKI, Biomatematyka
Biomatematyka 90...... Zadanie 1. (8 punktów) Liczebność pewnej populacji ryb jest opisana następującym równaniem Rickera: N n+1 = α N n exp( βn n ), (1) w którym N n oznacza liczebność populacji w n tej
Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład
#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
Programowanie i projektowanie obiektowe
Programowanie i projektowanie obiektowe Klasy i obiekty Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. V Jesień 2011 1 / 13 Typy danych (w Javie) Typy pierwotne typ wartości
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
Drzewa czerwono-czarne.
Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric
Programowanie Procedurale
Programowanie Procedurale Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale Wykład 6 1 / 27 Zbiór ctime zawiera deklarcję
Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,
WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy zmiennych języka C++ Nazwa typu (nazwa skrócona) Rozmiar (bajtów) unsigned char 1 signed char (char) unsigned short int (unsigned) signed short int (int)
Algorytmy i struktury danych Struktury danych IS/IO, WIMiIP
Algorytmy i struktury danych Struktury danych IS/IO, WIMiIP Danuta Szeliga AGH Kraków Spis treści I 1 Wstęp Pojęcia podstawowe Abstrakcyjne typ danych Statyczna/dynamiczna struktura danych 2 Statyczne
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,
int tab_a [ 2 ] [ 3 ];
// PROGRAM 4_1 - Przyklady dynamicznego tworzenia // i usuwania tablicy dwuwymiarowej int [2][3] #include void main(void) //------------------------------ Przyklad A -------------------------------------------
INSTRUKCJE REPETYCYJNE PĘTLE
INSTRUKCJE REPETYCYJNE PĘTLE Pętla while( ) while ( wyrażenie ) instrukcja; while ( wyrażenie ) instrukcja_1; instrukcja_2;... instrukcja_n; Pętla wykonywana jest tak długo jak wartość wyrażenie jest różna
Lista liniowa dwukierunkowa
53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej
Struktury dynamiczne
Struktury dynamiczne lista jednokierunkowa lista dwukierunkowa lista cykliczna stos kolejka drzewo Ich wielkość i stopień złożoności zmieniają się w czasie. Struktury dynamiczne oparte są o struktury (struct).
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
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ę
Podstawy Programowania C 02
Podstawy Programowania C 02 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 5 7 4 8 x y wx wy zmienna zmienna adres x adres y int x,y,pom; int wx, wy; x=5; y=7; printf("\nx=%d\ty=%d\n",x,y);
Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/
Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura
Łańcuchy znaków. Agnieszka Nowak - Brzezińska
Łańcuchy znaków Agnieszka Nowak - Brzezińska Warto najpierw zajrzeć http://gpl.ii.us.edu.pl/~romex/pp_cxx/pp_cxx_w_07.pdf Wszystkie funkcje są omówione w wykładzie! Etap I Napisz program w całości na tablicach
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Struktury Danych i Złożoność Obliczeniowa
Struktury Danych i Złożoność Obliczeniowa Zajęcia 3 Struktury drzewiaste drzewo binarne szczególny przypadek drzewa, które jest szczególnym przypadkiem grafu skierowanego, stopień każdego wierzchołka jest
Uzupełnienie dot. przekazywania argumentów
Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;
Algorytmy i struktury danych. wykład 5
Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również
IX. Wskaźniki.(3 godz.)
Opracowała: dr inż. Anna Dubowicka Uczelniane Centrum Komputerowe PK IX. Wskaźniki.(3 godz.) Wskaźnik jest zmienną, która zawiera adres innej. 1. Definiowanie wskaźników. typ * nazwa ; gdzie: znak * informuje
ALGORYTMY I STRUKTURY DANYCH
LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu
Podstawy 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ą
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 4. Podstawowe biblioteki. Pętle. Operatory inkrementacji, dekrementacji, przypisania. Instrukcje goto, continue, break. Operacje na plikach.
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
typ_zwracanej_wartości nazwa_funkcji(lista deklaracji argumentów) { ciało(treść) funkcji return Val; //zwracana wartość }
Języki i paradygmaty programowania studia stacjonarne 208/9 Lab 3. Funkcje, argumenty funkcji, wskaźniki, adresy.. Podstawowe pojęcia: Funkcja w C (czasami nazywana podprogramem, rzadziej procedurą) to
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach. 1. Dynamiczna alokacja pamięci dla tablic wielowymiarowych - Przykładowa
Algorytmy 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
Wykład 3. Drzewa czerwono-czarne
Wykład 3 Drzewa czerwono-czarne 1 Drzewa zbalansowane Wprowadzenie Drzewa czerwono-czarne Definicja, wysokość drzewa Rotacje, operacje wstawiania i usuwania Literatura Cormen, Leiserson, Rivest, Wprowadzenie