我正在尝试实现一些队列操作,但看起来即使在推送所有元素之后前端仍然是NULL。在main函数中,我只读了一些元素并将它们推入队列中。我的代码:
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 :(得分:0)
您正在使用函数前面的全局变量front
进行镜像:void push(tnod *front,int item)
。
当您在功能中更改front
时,全局front
不会更改。更改变量名称。
如果你有任何机会将全局变量front作为push函数中的第一个参数传递,那么通过改变函数中的参数将不会改变全局前沿。