我正在制作和ADT阙,想要像你们这样打印出所有的阙。 这是我的结构:
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);
}
我只获得一个元素然后编程崩溃。任何解决方案?
答案 0 :(得分:0)
首先,您的插入代码可能有问题,因此需要验证。根据信息,您的show()
代码也不正确。您正在修改Q
中的q->fr = q->fr->prv
指针,从而修改队列内容。此外,您不应该减少队列大小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*/
}
}