创建的时候rare和front都需要指向头结点,然后入队正常,出队就是front-next=front->next->next,判断是否为空是就是和Sq队列相同(if(rare==front)就是空)。只是出队的时候需要判断出队的是不是最后一个元素!(这个得分情况)
if (p.front->next == p.rear) /* 如果出队的节点为最后一个节点 */
{
printf("出队节点的数据为%d----", p.rear->data);
free(p.rear); /* 释放最后一一个节点*/
p.rear = p.front; /* 队首指针和队尾指针都指向头节点 */
p.front->next = NULL;
p.length--;
}
else
{
del = p.front->next;
printf("出队节点的数据为%d----", del->data);
p.front->next = p.front->next->next; /* 使头节点的指针域指向出队节点的下一个节点 */
free(del); /* 释放出队的节点 */
p.length--;
}