队列
为了阅读方便和保持内容的完整性,这部分使用了队列的数组实现(C语言)中的内容
队列是一种允许在一端(队尾,rear)进行插入操作,另一端(队头,front)进行删除操作的数据结构。
- 插入:在队尾进行,也称为入队
- 删除:在队头进行,也称为出队
队列的示意图如下:
队列只能在一端进行插入,另一端进行删除,从示意图可以看出,队列里的元素是按照入队的顺序出队的(因此队列经常被用在排队等候类的应用中)。
根据队列的特征,队列也被称为先进先出(First In First Out,FIFO)列表。
队列的操作
我们使用单链表实现对堆栈的操作,对单链表不熟悉的小伙伴可以先移步单链表及C语言实现,然后再来学习本节
单链表是单向的,队列其实也是单向的(只能在队头出,队尾入),因此,我们可以将单链表的头结点作为队列的队头,将单链表的尾结点作为队列的队尾
入队
在队尾中添加新结点,示意图如下:
操作如下:
rear->next=ptr;
ptr->next=NULL;
rear=ptr;
出队
将队头即头结点移出,示意图如下:
操作如下:
ptr=front;
front=front->next;
free(ptr);
遍历
只要结点的next不为NULL就继续遍历
查找
遍历的过程中与给定数据进行比对以查找
队列的C语言链表实现
文中提到的关于堆栈的所有操作都使用了C语言的链表进行了实现,具体代码见Github
代码的运行效果如下:
才疏学浅,难免有错误和不当之处,欢迎交流批评指正!
同时有问题的话欢迎留言或邮箱联系(ljt_IT@163.com)。