用单链表表示的链队列
队列
和栈相反,队列(Queue)是一种先进先出(First In First Out,缩写为FIFO)的线性表。
它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。队列在程序设计中也经常出现。一个最典型的例子就是操作系统中的作业排队。在允许多道程序运行的计算机系统中,同时有几个作业运行。如果运行的结果都需要通过通道输出,那就要按请求输出的先后次序排队。每当通道传输完毕可以接受新的输出任务时,队头的作业先从队列中退出输出操作。凡是申请输出的作业都从队尾进入队列。
在队列中,允许插入的一端叫队尾(rear),允许删除的一端则称为队头(front)。
除了栈和队列之外,还有一种限定性数据结构是双端队列(Deque)。
双端队列是限定插入和删除操作在表的两端进行的线性表。
在实际使用中,还可以有输出受限的双端队列(即一个端点允许插入和删除,另一个端点只允许插入的双端队列)和输入受限的双端队列(即一个端点允许插入和删除,另一个端点只允许删除的双端队列)。
而如果限定双端队列从某个端点插入的元素只能从该端点删除,则双端队列就蜕变为两个栈底相邻的栈了。
尽管双端队列看起来似乎比栈和队列更灵活,但实际上在应用程序中远不及栈和队列有用。
SingleLinkedListQueue.c文件
1 | #include <stdio.h> |
SingleLinkedListQueue.h文件
1 | /* Define to prevent recursive inclusion -------------------------------------*/ |
testSingleLinkedListQueue.c文件
1 | #include <stdio.h> |
编译:
1 | gcc SingleLinkedListQueue.c SingleLinkedListQueue.h testSingleLinkedListQueue.c -o testSingleLinkedListQueue |
运行testSingleLinkedListQueue:
1 | queue is empty:1 |
本文标题:用单链表表示的链队列
文章作者:Mr Bluyee
发布时间:2018-09-03
最后更新:2019-07-15
版权声明:The author owns the copyright, please indicate the source reproduced.