#include #include typedef struct clan_struct { struct clan_struct* prosli; int v; struct clan_struct* sledeci; } Clan; void Odstampaj(Clan* lista) { Clan* trenutni = lista; while(trenutni != NULL) { printf("%d\t", trenutni->v); trenutni = trenutni->sledeci; } putchar('\n'); } void OdstampajUnazad(Clan* lista) { Clan* trenutni = lista; while(trenutni->sledeci != NULL) trenutni = trenutni->sledeci; while(trenutni != NULL) { printf("%d\t", trenutni->v); trenutni = trenutni->prosli; } putchar('\n'); } Clan* DodajUListu(Clan* lista, int broj) { if(lista == NULL) { lista = (Clan*) malloc (sizeof(Clan)); lista->v = broj; lista->sledeci = NULL; lista->prosli = NULL; } else { Clan* trenutni = lista; while(trenutni->sledeci != NULL) trenutni = trenutni->sledeci; Clan* novi = (Clan*) malloc(sizeof(Clan)); trenutni->sledeci = novi; novi->sledeci = NULL; novi->prosli = trenutni; novi->v = broj; } return lista; } Clan* IzbaciIzListe(Clan* lista, int broj) { if(lista == NULL) printf("Lista je prazna\n"); else { Clan* trenutni = lista; while(trenutni != NULL && trenutni->v != broj) trenutni = trenutni->sledeci; if(trenutni == NULL) printf("Ne postoji trazeni element\n"); else { trenutni->prosli->sledeci = trenutni->sledeci; trenutni->sledeci->prosli = trenutni->prosli; free(trenutni); } } return lista; } void DealocirajMemoriju(Clan* lista) { Clan* pom; while(lista != NULL) { pom = lista; while(pom->sledeci != NULL) pom = pom->sledeci; if(pom->prosli == NULL) lista = NULL; else pom->prosli->sledeci = NULL; free(pom); } } int main() { Clan* lista = NULL; int i, broj; for(i=0; i<5; i++) { scanf("%d", &broj); lista = DodajUListu(lista, broj); } Odstampaj(lista); OdstampajUnazad(lista); lista = IzbaciIzListe(lista, 3); Odstampaj(lista); DealocirajMemoriju(lista); system("PAUSE"); return 0; }