[ zokio @ 07.11.2005. 22:26 ] @
Naime poceo sam raditi zadatke sa vezanim listama, a posto nisam ima ideje kako i sta uzeo sam knjigu i poceo raditi vec uradjeni, no medjutim neli dijelovi koda mi nisu jasni(oznacit cu ih) a uostalom program puca ne znam zasto. Ako mozete pogledajet i pomozite jer bez ovog nemogu proci ispit....
Unaprijed hvala

Code:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define    KRAJ (struct ime *) 0


struct ime{
char *p_ime;
struct ime *next;
};

struct ime *start=KRAJ;
void unos(void);
main()

{

unos();

}


void unos(void)
{
    struct ime *zadnji, *novi;
    char line[128];

    /*Dodavanje novog elementa*/

    novi=(struct ime *)malloc(strlen(line)+1);  
/*-nije mi jasno ovdje za sto se tocno alocira memorija- za pokazivac novi.. u knjizi pise "kod prvo alocira memoriju za element novi" - nejasno mi je zasto to cini tu a ne poslije scanf funkcije*/
    
    if (novi=NULL){
    printf("Nema dovoljno memorije . . .");
    exit(-1);
}

novi->next=KRAJ;
printf("Unesite ime > ");
scanf("%s", line);
novi->p_ime=(char *) malloc(strlen(line)+1);
if (novi->p_ime==NULL){
printf("Nema dovoljno memorije . . .");

strcpy(novi->p_ime, line);

if(start==KRAJ) /*PRAZNA LISTA*/
start=novi;
else{
/*pronadji kraj liste*/
for(zadnji=start; zadnji-> next!=KRAJ; zadnji=zadnji->next)
; /*ne radi nista*/

/*sada neka zadnji pokazuje na novi element*/
zadnji->next=novi;
}

}




E da i prilikom kompajliranja javlja se warning da "novi nije inicijaliziran"

eto ako netko ima zelje i volje stvarno sam izgubljen a nemam koga pitat, unaprijed HVALA! ! !
[ zokio @ 08.11.2005. 20:17 ] @
Momci svima vam se od srca zahvaljujem na pomoci.


H V A L A ! ! ! ! ! ! ! !


P.S

pa mogli ste barem napisati da se gonim u k***c ako nista drugo
jos jednom hvala
[ don_mathew @ 09.11.2005. 17:42 ] @
vidim nitko ne odgovara...hm

ajd da probamo ovako napisi koji ti je zadatak pa cu ga ja il netko uradit ovo mi se stvarno ne da prepravljati jer kolko vidim nije ni blizu gotovog...(imao sam 5 na faxu iz programiranja valjda cu znat nesto :D )
[ zokio @ 09.11.2005. 21:09 ] @
Ma dobro mozda sam ja postavio samodio zadatka, ali mislio sam samo da mi netko objasni zasto se za " *novi " rezervira memorija velicine cjele strukture, no dobro hvala ti sto si barem pogledao, aj pokušat ću napisat zadatak pa ako bude grešaka javim se, još jednom hvala.
[ don_mathew @ 10.11.2005. 13:07 ] @
rezervira se zato jer radis sa strukturom a ne sa jednom varijablom pa da za nju samo rezerviras memoriju...

i onda preko pokazivaca novi tom rezerviranom djelu memorije dodjeljujes vrijednost...prosto objasnjeno :)

jer imas jos jedan pokazivac strukture na samu sebe koja ce odrediti mjesto te strukture u listi i pomocu njega pretrazujes listu i mozes naci svaki element liste...btw to s listama ti je najlakse nacrtati sebi tako sam ja uradio drugi ispit na ispitu sam jednostavno crtao lisise i nacin rada da bih shvatio gdje sta i kako...

i samo jos jedan prijedlog pokusaj da u definiciji strukture definiras stvarnu varijablu tipa char a ne pokazivac pa ces neke stvari mozda brze skontati...

http://www.fsr.ba/ispiti/URP-P-pismeni-ispit-primjeri.zip (skini ove zadatke pa malo pogledaj...)


[Ovu poruku je menjao don_mathew dana 10.11.2005. u 14:08 GMT+1]

[Ovu poruku je menjao don_mathew dana 10.11.2005. u 14:12 GMT+1]
[ glorius @ 10.11.2005. 23:50 ] @
Ups! Mala grescica a u sustini katastrofa!

Pogledaj...

Code:


if (novi=NULL){
    printf("Nema dovoljno memorije . . .");
    exit(-1);



Vec si dodelio nulu promenljivoj novi.

Samo ovo izmenu u sledece:

Code:


if (novi == NULL){
    printf("Nema dovoljno memorije . . .");
    exit(-1);



Pozdrav!

[Ovu poruku je menjao glorius dana 11.11.2005. u 00:51 GMT+1]