我正在制作和ADT que,想为大家打印出所有的que。这是我的结构:
typedef int kintyr;
typedef struct qElem {
struct qElem *prv;
kintyr *dat;
}qElem;
typedef struct que {
qElem *fr,*bk;
int cnt;
}que;我把元素放到que中,但是当我想把它们打印到屏幕上时,我得到了某种内存错误:
void show(que *q)
{
do
{
printf( "%d\n", temp->bk->dat );
q->fr = q->fr->prv;
q->cnt--;
}
while (q->cnt != 0);
}我只得到一个元素,然后程序就崩溃了。有什么解决方案吗?
发布于 2014-09-17 19:02:44
首先,您的插入代码可能有问题,因此需要验证这一点。根据这些信息,您的show()代码也是不正确的。您正在修改q->fr = q->fr->prv中的Q指针,从而修改了队列内容。此外,您不应该减少队列大小q->cnt--;应该在删除节点时这样做。
void show(que *q)
{
qElem *ptr = q->fr;
while (ptr != NULL) { /*assuming that last node's fr pointer is NULL*/
printf("%d\n, *(ptr->dat)");
ptr = ptr->fr; /*going forward*/
}
}https://stackoverflow.com/questions/22333275
复制相似问题