2014-11-12 2 views
0

Я пытаюсь реализовать некоторые операции с очередями, но кажется, что фронт остается NULL даже после нажатия всех элементов. В основной функции я просто прочитал некоторые элементы и нажал их в очередь. Мой код:Очередь не работает

typedef struct nod 
{ 
    int info; 
    struct nod *link; 
}tnod; 
tnod *front=NULL,*rear=NULL; 
void push(tnod *front,int item) 
{ 
    tnod *tmp; 
    tmp=malloc(sizeof(tnod)); 
    if(tmp==NULL) 
    { 
     printf("Memorie indisponibila\n"); 
     return; 
    } 
    tmp->info = item; 
    tmp->link=NULL; 
if(front==NULL)  /*daca stiva e goala*/ 
     {front=tmp; printf("%d",front->info);} 
else 
    rear->link = tmp; 
    rear=tmp; 
} 

Заранее спасибо.

ответ

0

Вы затеняете глобальную переменную front с фронтальной функцией: void push(tnod *front,int item).

При изменении front в функции глобальный front не изменяется. Измените имена переменных.

Если вы случайно передаете глобальную переменную фронт в качестве первого параметра в функции push, то, изменив параметр в функции, не изменится глобальный фронт.

+0

Будет ли он работать, если я просто удалю этот параметр из функции? – Andy

+0

@Andy Если вам не нужен этот параметр, вы можете удалить его. Посмотрите, как вы вызываете функцию. – 2501

+0

Какое имя переменной следует изменить? Один из глобальных или в функции? – Andy

Смежные вопросы