C语言:链表实现队列(queue)

生活中,排队到处可见:超市结账的时候排队,电影院检票的时候排队,医院挂号的时候排队等等。先到的人当然有优先的权利!先到先得,后到后得就是队列得核心思想。

C语言:链表实现队列(queue)_第1张图片 队列

如图。A 先进队,A 就得先出来,不管 A 愿不愿意!接着是 B , C , D , E , F , G 。总之,队列就是指先进先出(FIFO, First-In-First-Out)的线性表。那么问题来了,特殊的线性表.........嗯,是用顺序表实现呢还是用链表实现呢?而且队列的队头只能删除数据,队尾只能插入数据...貌似链表好实现一点呢!


我们先创建两个结构体,一个是链表节点的结构,一个是包含两个指针的结构,这两个指针,一个是指向链表头节点的指针(head),一个是指向链表尾节点的指针(tail)。队尾每进入一个节点,tail 指针就向后指向新节点;队头每次出去一个节点,head 指针就指向后一个节点。

最后队列大致的结构如下图:

C语言:链表实现队列(queue)_第2张图片

 结构体创

你可能感兴趣的:(链表,数据结构,算法)