#include #include typedef struct _element { int broj; struct _element *sledeci; } element; void dodajNaPocetak( element **p, int broj ) //O(1) { element *novi = ( element * ) malloc( sizeof( element ) ); novi -> broj = broj; novi -> sledeci = NULL; if ( !*p ) *p = novi; else { novi -> sledeci = *p; *p = novi; } } void dodajNaKraj( element **p, int broj ) // O(n) { element *novi = ( element * ) malloc( sizeof( element ) ); novi -> broj = broj; novi -> sledeci = NULL; if ( !*p ) *p = novi; else { element *pom = *p; while ( pom -> sledeci ) pom = pom -> sledeci; pom -> sledeci = novi; } } void ispis( element *p ) { while ( p ) { printf("%d ", p -> broj ); p = p -> sledeci; } putchar('\n'); } void formirajListu( element **p ) { int broj; scanf("%d", &broj ); while ( broj ) { dodajNaKraj( p, broj ); ispis( *p ); scanf("%d", &broj ); } } element *formirajListuIzFajla( char *naziv ) { element *p = NULL; FILE *f = fopen(naziv, "r"); if ( !f ) { printf("Greska pri citanju fajla!\n"); exit( 2342 ); } int broj; while ( fscanf( f, "%d", &broj ) == 1 ) dodajNaPocetak( &p, broj ); fclose( f ); return p; } void _ispisUnazad( element *p ) { if ( p -> sledeci ) _ispisUnazad( p -> sledeci ); printf("%d ", p -> broj ); } void ispisUnazad( element *p ) { _ispisUnazad( p ); putchar('\n'); } int sumaElemenata( element *p ) { int suma = 0; while ( p ) { suma += p -> broj; p = p -> sledeci; } return suma; } int main() { element *p = NULL; //formirajListu( &p ); element *p2 = formirajListuIzFajla("ulaz.txt"); ispisUnazad( p2 ); printf("Suma elemenata je %d\n", sumaElemenata( p2 ) ); return 0; }