【问题标题】:How to print out doubly linked list (ADT que)?如何打印出双向链表(ADT que)?
【发布时间】:2014-04-15 12:15:10
【问题描述】:

我正在制作和 ADT que,想和你们一样打印出所有的 que。 这是我的结构:

typedef int kintyr;

typedef struct qElem {
    struct qElem *prv;          
    kintyr *dat;                    

}qElem;

   typedef struct que {
    qElem *fr,*bk;              
    int cnt;                    
}que;

我将元素放到队列中,但是当我想将它们打印到屏幕上时,我得到了某种内存错误:

void show(que *q)
{

do
    {
            printf( "%d\n", temp->bk->dat );
              q->fr = q->fr->prv;
            q->cnt--;
    }
    while (q->cnt != 0);

}

我只得到一个元素,然后程序崩溃。有什么解决办法吗?

【问题讨论】:

标签: c pointers linked-list adt doubly-linked-list


【解决方案1】:

首先,您的插入代码可能有问题,因此需要进行验证。鉴于信息,您的 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*/
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多