[ kish @ 26.07.2006. 15:39 ] @
El moze neko da mi objasni sta ne valja u sledecem kodu? Znam da je nesto u vezi sa funkcijom Create, al ne znam tacno sta...

Code:

#include <iostream>
using namespace std;
#include <stdlib.h>

struct node
{
    int x;
    node *next;
};

node *root;

void print(node *l)
{
    cout << l->x << endl;
}

void Create(node *l)
{
    l=new node;
    l->next=NULL;
    l->x=5;
}

int main()
{
    cout << "==BEGIN==" << endl;
    Create(root);
    print(root);
    cout << "==END==" << endl;

    return 0;
}
[ Dragi Tata @ 26.07.2006. 16:04 ] @
Problem je što predaješ pointer funkciji Create po vrednosti, tj. unutar funkcije se vidi kopija pointera iz main. Ili prosledi pointer na pointer, ili referencu na pointer, ili (najbolje IMHO) nemoj da prosleđuješ ništa nego vrati pointer kao rezultat funkcije i onda kaži:

Code:

root = Create();
[ kish @ 26.07.2006. 16:40 ] @
Nisam siguran dal sam razumeo u cemu je tacno problem ali sam ga resio na onaj drugi nacin ( root=Create() ). Ipak bih zeleo da znam u cemu je tacno fazon, pa ako ti nije problem da napises piece-of-code sa onim: prosledi pointer na pointer. Hvala ti u svakom slucaju.
[ Dragi Tata @ 26.07.2006. 17:20 ] @
OK. Iz glave (nisam probao da kompajliram)

Code:

void Create(node **l)
{
    *l = new node;
    (*l)->next=NULL;
    (*l)->x=5;
}

int main()
{
    cout << "==BEGIN==" << endl;
    Create(&root);
    print(root);
...
[ kish @ 26.07.2006. 17:48 ] @
Mislim da sam probao na taj nacin al je kompajler nesto kenj##o zbon onog **. U svakom slucaju probacu, pa mozda proradi. THX.
[ kish @ 26.07.2006. 17:52 ] @
Radi!!! Hvala!