Professional Documents
Culture Documents
2016.
A09 JEDNOSTRUKO POVEZANA LISTA
Napisati program u kojem treba:
• definisati tip CVOR kojim se reprezentuje čvor jednostruko povezane kružne liste
(informacioni sadržaj treba da bude cijeli broj),
• definisati funkciju koja dodaje novi čvor na početak liste,
• definisati funkciju koja dodaje novi čvor na kraj liste,
• definisati funkciju koja dodaje novi čvor iza zadatog čvora,
• definisati funkciju koja dodaje novi čvor ispred zadatog čvora,
• definisati funkciju koja briše čvor iza zadatog čvora,
• definisati funkciju koja briše listu,
• definisati funkciju koja omogućava pretraživanje liste,
• definisati funkciju koja ispisuje sadržaj liste,
• definisati funkciju koja omogućava spajanje dvije liste,
• u glavnom programu ilustrovati rad sa jednostruko povezanom kružnom listom tj.
definisanim funkcijama.
novi->sljedeci = cvor->sljedeci;
cvor->sljedeci = novi;
return novi;
}
novi->podatak = cvor->podatak;
novi->sljedeci = cvor->sljedeci;
cvor->podatak = podatak;
cvor->sljedeci = novi;
return cvor;
}
Liste (2. dio) 4
A09 JEDNOSTRUKO POVEZANA LISTA
int brisi_iza(CVOR **plista, CVOR *cvor) {
CVOR *p = cvor->sljedeci;
if (cvor == p) return 0; void pisi(CVOR *lista) {
cvor->sljedeci = p->sljedeci; if (lista == 0) return;
if (*plista == p) *plista = cvor; CVOR *p = lista;
free(p); do {
return 1; p = p->sljedeci;
} printf(" %d", p->podatak);
} while (p != lista);
void brisi_listu(CVOR **plista) { }
if (*plista == 0) return;
CVOR *p = *plista; void spoji(CVOR **plista1, CVOR *lista2) {
do { if (*plista1 == 0) *plista1 = lista2;
CVOR *q = p->sljedeci; else if (lista2 == 0) return;
free(p); p = q; CVOR *p = (*plista1)->sljedeci;
} while (p != *plista); (*plista1)->sljedeci = lista2->sljedeci;
*plista = 0; lista2->sljedeci = p;
} *plista1 = lista2;
}
CVOR* trazi(CVOR *lista, int podatak) {
if (lista == 0) return 0;
CVOR *p;
for (p = lista; p->podatak != podatak && p->sljedeci != lista; p = p->sljedeci);
return p->podatak == podatak ? p : 0;
}
Liste (2. dio) 5
A09 JEDNOSTRUKO POVEZANA LISTA
int main() {
CVOR *lista1 = 0, *lista2 = 0; int br;
CVOR *c1 = dodaj_pocetak(&lista1, 1);
dodaj_pocetak(&lista1, 2); dodaj_kraj(&lista1, 3);
dodaj_iza(&lista1, c1, 4); dodaj_ispred(&lista1, c1, 5);
spoji(&lista1, lista2);
typedef struct cvor { char rijec[21]; struct cvor *lijevi, *desni; } CVOR;