Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Vazby dynamických proměnných,databázové systémy Přednáška č. 10.

Podobné prezentace


Prezentace na téma: "Vazby dynamických proměnných,databázové systémy Přednáška č. 10."— Transkript prezentace:

1 Vazby dynamických proměnných,databázové systémy Přednáška č. 10

2 Vazby dynamických proměnných (1) Fiat 2007 Renault 2005 Skoda 2001 BMW 2008 ukazatel  Přístup s polem ukazatelů:  Pole může být:  statické (nevýhoda pevné velikosti)  dynamické (nutno volat realloc, při vložení jinde než nakonec, nutno ukazatele v poli přeskládat) dynam. prom

3 Vazby dynamických proměnných (2)  Přístup s využitím lineárního seznamu:  statický ukazatel na začátek seznamu  přidány ukazatele do dynamické struktury  poslední prvek neukazuje nikam (NULL)  velikost seznamu omezena pouze velikostí paměti  snadné přidávání i vkládání do seznamu  nemožnost indexace ( pro získání prvku uprostřed seznamu, musíme projít celý seznam, i když známe jeho pořadové číslo (index) ) Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom

4 Vazby dynamických proměnných (3)  Přidání prvku na konec lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom

5 Vazby dynamických proměnných (3)  Přidání prvku na konec lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom Audi 2006 NULL dynam. prom

6 Vazby dynamických proměnných (3)  Přidání prvku na konec lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 ukazatel dynam. prom Audi 2006 NULL dynam. prom

7 Vazby dynamických proměnných (4)  Přidání prvku na konec lineárního seznamu:  abychom nemuseli procházet celý seznam, je dobré pro rychlé přidávání na konec evidovat krom ukazatele na začátek, také ukazatel na konec Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom ukazatel na konec

8 Vazby dynamických proměnných (5)  Vložení prvku do lineárního seznamu:  abychom při vkládání zachovali uspořádanost seznamu – v našem příkladu třeba dle roku výroby  vůz s rokem výroby 2006 musíme vložit mezi Renault a Fiat Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom

9 Vazby dynamických proměnných (6)  Vložení prvku do lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom

10 Vazby dynamických proměnných (6)  Vložení prvku do lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom Audi 2006 NULL dynam. prom

11 Vazby dynamických proměnných (6)  Vložení prvku do lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom Audi 2006 NULL dynam. prom

12 Vazby dynamických proměnných (6)  Vložení prvku do lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom Audi 2006 NULL dynam. prom

13 Vazby dynamických proměnných (6)  Vložení prvku do lineárního seznamu: Renault 2005 ukazatel dynam. prom Skoda 2001 ukazatel dynam. prom ukazatel na začátek Fiat 2007 ukazatel dynam. prom BMW 2008 NULL dynam. prom Audi 2006 ukazatel dynam. prom

14 Vazby dynamických proměnných (7)  struktura t_auto #include "stdafx.h" #include struct t_auto { char znacka[10]; int rok; t_auto * dalsi; }; struct t_auto * prvni = NULL; // globalni ukazatel na prvni auto

15 Vazby dynamických proměnných (8)  funkce show() void show() // tisk aut { struct t_auto * aktAuto = prvni; // ukazatel na aktualni auto while ( aktAuto ) // prochazeni seznamu { printf( "%d: %s\n", aktAuto->rok, aktAuto->znacka ); // tisk radku aktAuto = aktAuto->dalsi; // posun na dalsi auto }

16  funkce add() void add( char * znacka, int rok ) // pridani auta { struct t_auto * noveAuto; // ukazatel pro nove vkladane auto // alokace dynamicke promenne noveAuto = ( struct t_auto * )malloc( sizeof( struct t_auto ) ); strcpy( noveAuto->znacka, znacka ); // naplneni struktury noveAuto->rok = rok; noveAuto->dalsi = NULL; if ( prvni == NULL ) // linearni seznam je prazdny { prvni = noveAuto; return; } else if ( noveAuto->rok rok ) // vlozime na zacatek { noveAuto->dalsi = prvni; prvni = noveAuto; return; } struct t_auto * aktAuto = prvni; // ukazatel na aktualni auto while ( aktAuto ) // prochazeni seznamu { if ( aktAuto->dalsi == NULL ) // jsme na poslednim aute { aktAuto->dalsi = noveAuto; // pridavame na konec return; } else if ( noveAuto->rok dalsi->rok ) { noveAuto->dalsi = aktAuto->dalsi; // vlozime za aktAuto aktAuto->dalsi = noveAuto; return; } aktAuto = aktAuto->dalsi; // posun na dalsi auto }

17 Vazby dynamických proměnných (9)  příklad práce se seznamem add( "Fiat", 2007 ); add( "Skoda", 2001 ); add( "Renault", 2005 ); add( "BMW", 2008 ); add( "Audi", 2006 ); show(); getchar();


Stáhnout ppt "Vazby dynamických proměnných,databázové systémy Přednáška č. 10."

Podobné prezentace


Reklamy Google