Povezane strukture podataka (Poludinami č ke i dinami č ke strukture podataka) - PowerPoint PPT Presentation

keita
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Povezane strukture podataka (Poludinami č ke i dinami č ke strukture podataka) PowerPoint Presentation
Download Presentation
Povezane strukture podataka (Poludinami č ke i dinami č ke strukture podataka)

play fullscreen
1 / 10
Download Presentation
Povezane strukture podataka (Poludinami č ke i dinami č ke strukture podataka)
124 Views
Download Presentation

Povezane strukture podataka (Poludinami č ke i dinami č ke strukture podataka)

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Povezane strukture podataka(Poludinamičke i dinamičkestrukture podataka)

  2. typedef struct cvor_st { struct cvor_st *sledeci; /* ... */ } JCVOR; JCVOR pocetakliste, *pocetak, *tekuci; pocetakliste pocetak tekuci OPŠTI OBLIK JEDNOSTRUKO POVEZANE LISTE pocetak pocetakliste ... tekuci Jednostruko povezane liste - skup čvorova povezanih pokazivačima u jednom smeru. - svaki čvor je strukturna promenljiva - lista može da sadrži promenljiv broj čvorova

  3. novi = (JCVOR *)malloc(sizeof(JCVOR)); Operacije nad listom novi - umetanje čvora u povezanu listu - brisanje tekućeg čvora iz liste - pristup čvoru radi čitanja i upisa tekuci novi->sledeci = tekuci->sledeci; novi tekuci tekuci->sledeci = novi; novi tekuci

  4. JCVOR * umetni_cvor(JCVOR *listp) { JCVOR *novi; novi = (JCVOR *)malloc(sizeof (JCVOR)); if (novi != NULL); { novi->sledeci = listp->sledeci; listp->sledeci = novi; } return novi; } void brisi_cvor(JCVOR *listp) { JCVOR *priv; priv = listp->sledeci; listp->sledeci = listp->sledeci->sledeci; free (priv); }

  5. Ciklične jednostruko povezane liste pocetak->sledeci = pocetak;

  6. Upravljanje memorijom /* * strdup.c * * Napravi bafer odgovarajuce velicine i kopiraj u njega znakovni niz. */ #include <stdio.h> #include <stdlib.h> #include <string.h> char * strdup(const char *niz) { char *novi; novi = (char *)malloc(strlen(niz) + 1); return novi == NULL ? novi : strcpy(novi, niz); } int main () { char niz [] = "Probni niz!"; char *novi; printf ("\nPocetni niz : %s", niz); novi = strdup (niz); printf ("\nDuplirani niz: %s", novi); return EXIT_SUCCESS; }

  7. Primer: kartoteka

  8. Dvostruko povezane liste typedef struct dcvor_st { struct dcvor_st *sledeci, *prethodni; /* ... */ } DCVOR; DCVOR pocetakliste, *pocetak, *tekuci; OPŠTI OBLIK DVOSTRUKO POVEZANE LISTE pocetak pocetakliste ... ... tekuci

  9. DCVOR * umetni_dcvor(DCVOR *listp) { DCVOR *novi; novi = (DCVOR *)malloc(sizeof (DCVOR)); if (novi != NULL); { novi->prethodni = listp; novi->sledeci = listp->sledeci; listp->sledeci ->prethodni = novi; listp->sledeci = novi; } return novi; } void brisi_cvor(DCVOR *listp) { listp->prethodni->sledeci = listp->sledeci; listp->sledeci->prethodni = listp->prethodni; free (listp); }

  10. Ciklične dvostruko povezane liste CIKLIČNA LISTA pocetak