0
回答
大家帮我解释一下C的环形队列,我看得不是很懂啊..
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
typedef int Item;

typedef struct node
{
  Item item;  
  struct node * next;
} Node;

typedef struct queue
{
  Node * front;  /*指向队列头的指针*/
  Node * rear;   /*指向队列尾的指针*/
  int items;     /*队列的项数*/
} Queue;

/*出队函数*/
bool DeQueue(Item * pitem, Queue * pq)
{
    Node * pt;
    
    if (QueueIsEmpty(pq))
        return false;
    CopyToItem(pq->front, pitem);
    pt = pq->front;
    pq->front = pq->front->next;
    free(pt);
    pq->items--;
    if (pq->items == 0)
        pq->rear = NULL;
    
    return true;
}

书上是这样解释的:

关于指针要注意两点,第一,删除最后一项时,代码中并未显示设置front指针为NULL,因为已经设置了front指针指向被删除节点的next指针.如果该节点不是最后一个节点,那么它的next指针就为NULL.第二,代码使用临时指针(pt)储存待删除节点的位置.因为指向首节点的正式指针(pt->front)被重置为指向下一个节点,所以如果没有临时指针,程序就不知道该释放那块内存.

可不可以用通俗一下的说一下啊..不是太明白书中

"如果该节点不是最后一个节点,那么它的next指针就为NULL"这句,

还有其他的也是似动非懂的,麻烦各位帮帮忙

<无标签>
举报
踏踏步
发帖于8个月前 0回/133阅
顶部