隊列:限制在兩端進行插入和刪除的線性表
允許進行存入操作的一端為“隊尾”
允許進行刪除操作的一端為“隊頭”
順序隊列
注意:front指向隊頭元素的位置
? ? ? ? rear指向隊尾元素的下一個位置
實現循環隊列:(rear+1)%N取余,為了區分空隊和滿隊,滿隊元素個數比數組元素個數要少一
?sequeue.h
?queue_creat
?enqueue
? ? ? ? 1、判斷堆是否滿
? ? ? ? ?2、存數
dequeue
? ? ? ? ?在返回值之前,要判斷堆是否為空
?queue_empty
queue_full
queue_clear
?queue_free
鏈式隊列
?雙端隊列
插入操作在隊尾進行,刪除操作在隊頭進行,由隊頭指針和隊尾指針控制隊列的操作
?linkqueue.h
?queue_creat
?enqueue
? ? ? ? 1、申請P,封裝結點p
? ? ? ? 2、lq->rear->next = p
? ? ? ? 3、更新rear
?dequeue
?注意:當只有一個元素時,此時還要進行dequeue時,要進行將最后一個元素去掉,此時若rear不進行更改的話,rear將指向NULL,所以還要操作rear=front
?還有一種思路:在每次dequeue時都刪除front,并把dequeue的那個結點作為新的front
? ? ? ? 1、結點p指向lq的front
? ? ? ? 2、更新lq的front
? ? ? ? 3、釋放p
?queue_empty
?queue_free
?擔心用戶釋放了鏈表還使用的話,返回鏈表指針
?queue_clear
與queue_free不同是在while中