c - 队列推送不起作用

标签 c queue

我正在尝试实现一些队列操作,但似乎即使在推送所有元素后,前面仍然为空。在主函数中,我只是读取一些元素并将它们插入队列中。我的代码:

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;
}

提前致谢。

最佳答案

您正在使用函数中的 front 隐藏全局变量 front:void push(tnod *front,int item)

当您更改函数中的 front 时,全局 front 不会更改。更改变量名称。

如果您万一将全局变量 front 作为push 函数中的第一个参数传递,那么更改函数中的参数将不会更改全局 front。

关于c - 队列推送不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896136/

相关文章:

c - 在 C 中打印指向字符串 ( char *arr[ ] ) 的指针数组中的下一个字符串

c - 矩阵生成代码根本失败,我不知道为什么

Python:为什么一些 Queue.queue 的方法是 "unreliable"?

python - python中跨多个进程的同步

c - Linux内核模块复制进程的.text段

c - 检查非零的惯用方法

c - 释放已分配给 char 指针(字符串)数组的内存。我必须释放每个字符串还是只释放 "main"指针?

java - LinkedBlockingQueue 上的 add() 是否通知等待线程?

java - 优先购物排队

java - rabbitMQ 从 2 个队列消费