循环队列存储初始时 头仅有尾指针的循环链表不都指向的一个存储单元吗

循环链表是在单链表基础上将队尾的指针指向表头,循环链表可以在表头和表尾操作.而且可以很好的解决插入或删除高于表长的问题(运用取模运算)相较上一篇的单链表(用0元素填充)有更方便的操作方式.


/*此程序用以链表实现循环线性表主函数已作出测试。
若使用可将整数类型替换为指针来建立广义表
作者:姚帅 未经允许不得转载*/
}

在引用循环队列前我们需要了解队列是如何线性实现的(下图有错,x=sq[front++]) 
简单地讲,便是当队列为空时front = rear = 0,每当插入元素仅有尾指针的循环链表+1,删除元素是头指针+1但昰,我们会发现一个问题如上面的第四个图,01,2三个空间并没有使用因此,为了占用该空间我们使用了循环队列来实现。 
循环队列原理图: 
我们可以发现当循环队列属于上图的d1情况时,是无法判断当前状态是队空还是队满为了达到判断队列状态的目的,可以通過牺牲一个存储空间来实现 

 int rear; //队仅有尾指针的循环链表,若队尾不为空则指向队尾元素的下一个位置
 
}

入队:每次插入元素利用尾插法鈈要忘记将头结点后面放入结点。

出队:每次将头结点后面的节点输出并将其从循环链表上面卸下来。

置空:将头结点后面的元素设为空並将其只想头结点。

 
 * 入队(在链表尾部插入节点)
 
 * 置队空将尾结点的next域为空,头节点的next域设为空
 
 
}

我要回帖

更多关于 仅有尾指针的循环链表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信