Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Rad sa listama u C-u. Standardni primeri. Optimizacija ?

[es] :: C/C++ programiranje :: Rad sa listama u C-u. Standardni primeri. Optimizacija ?

[ Pregleda: 2935 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

overdose

Član broj: 33563
Poruke: 51
200.48.218.*



Profil

icon Rad sa listama u C-u. Standardni primeri. Optimizacija ?04.10.2004. u 13:14 - pre 238 meseci
Učim liste, pa sam napisao jedan program koji obrađuje standardne operacije sa listama. Možda može pomoći nekom ko je isto počeo da ih uči :) Izvorni kod je u prikačen uz poruku.

Naravno, osim toga što se pravim pametan, hteo sam da pitam da li je moguće optimizovati funkciju umetni ? Čini mi se da sam previše iskomplikovao.

Code:

/* Umetanje jednog elementa u neopadajuce uredjenu listu tako da lista i dalje ostane uredjena */
Elem *umetni (Elem *niz) {
  Elem *prethodni=NULL, *tekuci=niz, *naredni=niz->sled, *krajnji=niz; int broj;
  printf("Unesite broj koji zelite da umetnem u listu: ");
  scanf("%d", &broj);
  Elem *novi=malloc(sizeof(Elem));
  if (tekuci->sled != NULL && broj>tekuci->broj) { 
    while (krajnji->sled) krajnji=krajnji->sled;
    if (broj<krajnji->broj) /* standardni slucaj */
      while (tekuci)
        if (broj>tekuci->broj) {prethodni=tekuci; tekuci=naredni; naredni=naredni->sled;}
        else {
          novi->broj=broj;
          novi->sled=tekuci;
          prethodni->sled=novi;
          break; /* Kad umetne neka prekine ! */
        }
    else {novi->broj=broj; novi->sled=NULL; krajnji->sled=novi;} 
  } else { 
      if (broj>tekuci->broj) {novi->broj=broj; novi->sled=NULL; tekuci->sled=novi;}
      else {novi->broj=broj; novi->sled=tekuci; niz=novi;}
    }
  return niz;
}    



[~/files/c]$ cc 10_5_dopuna.c -o 10_5_dopuna
10_5_dopuna.c: In function `main':
10_5_dopuna.c:111: warning: return type of `main' is not `int'
[~/files/c]$ ./10_5_dopuna

Unesite niz celih brojeva, a zatim bilo sta sto nije ceo broj za nastavak.
Ukoliko zelite prekid programa unesite nesto sto nije ceo broj.
Konacno, trazeni unos je: 2 3 5 6 8 11 15 18 25 123 .
Ucitani niz = 2 3 5 6 8 11 15 18 25 123
Trenutni broj elemenata liste je 10
Trenutni zbir elemenata liste je 216
Unesite broj koji zelite da umetnem u listu (paziti da lista mora da bude neopadajuce uredjena !): 20
Novi niz = 2 3 5 6 8 11 15 18 20 25 123
Trenutni broj elemenata liste je 11
Trenutni zbir elemenata liste je 236
Unesite broj koji zelite da izostavim iz liste: 18
Izostavlja se 18
Novi niz = 2 3 5 6 8 11 15 20 25 123
Trenutni broj elemenata liste je 10
Trenutni zbir elemenata liste je 218
Unesite broj za dodavanje na kraj liste: 3
Novi niz = 2 3 5 6 8 11 15 20 25 123 3
Trenutni broj elemenata liste je 11
Trenutni zbir elemenata liste je 221
Unesite broj za dodavanje na pocetak liste: 55
Novi niz = 55 2 3 5 6 8 11 15 20 25 123 3
Trenutni broj elemenata liste je 12
Trenutni zbir elemenata liste je 276


Unesite niz celih brojeva, a zatim bilo sta sto nije ceo broj za nastavak.
Ukoliko zelite prekid programa unesite nesto sto nije ceo broj.
Konacno, trazeni unos je: .

[~/files/c]$
Prikačeni fajlovi
 
Odgovor na temu

[es] :: C/C++ programiranje :: Rad sa listama u C-u. Standardni primeri. Optimizacija ?

[ Pregleda: 2935 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.