如何在c中显示使用链表实现的队列元素?

如何在c中显示使用链表实现的队列元素?,c,queue,C,Queue,我使用链表实现了队列。显示功能仅打印最后一个元素。但是我想显示所有的元素。有人能纠正它吗?写显示函数的其他方法有哪些?节点声明是否错误 我的代码如下: 评论已经发现了问题所在,但只是想给出一个答案: 在insert功能中,以下行是问题所在: np=q->rear; 应该是: q->rear=np; 其工作原理与预期一致: Queue is empty Inserted 1 Inserted 2 Inserted 3 Inserted 4 Removed 1 2 3 4 您是否

我使用链表实现了队列。显示功能仅打印最后一个元素。但是我想显示所有的元素。有人能纠正它吗?写显示函数的其他方法有哪些?节点声明是否错误

我的代码如下:



评论已经发现了问题所在,但只是想给出一个答案:

insert
功能中,以下行是问题所在:

np=q->rear;
应该是:

q->rear=np;
其工作原理与预期一致:

Queue is empty
Inserted 1
Inserted 2
Inserted 3
Inserted 4
Removed 1
2 3 4

您是否确保队列结构本身是正确的,并且前端和所有指针都指向正确的位置?如果您正确缩进代码,您将获得更多帮助。您不会在
insert
函数中更新
q->rear
,以便在第一次插入后插入。此行
np=q->rear在我看来很奇怪。您是否打算执行
q->rear=np?另一个问题:
Remove
导致内存泄漏,因为
free(np)
仅在最后一个元素被删除时才被调用。@Nithur我很高兴!如果答案完全回答了你的问题,请接受
q->rear=np;
Queue is empty
Inserted 1
Inserted 2
Inserted 3
Inserted 4
Removed 1
2 3 4