佇列是限制在兩端進行插入操作和刪除操作的線性表,允許進行存入操作的一端稱為「隊尾」,允許進行刪除操作的一端稱為「隊頭」。當線性表中沒有元素時,稱為「空隊」。特點 :先進先出(fifo)。
佇列的特徵:
特殊的線性表,先進先出(fifo)。
1)資料:
對於非空的佇列,表頭沒有直接前驅,表尾沒有直接後繼,其它有且僅有乙個直接前驅和乙個直接後繼。
2)操作:
只允許在表尾插入資料,在表頭刪除資料
順序佇列
typedef int datatype ; /*定義佇列中資料元素的資料型別*/
#define maxsize 64 /*定義佇列的容量*/
typedef struct
sequeue ; /*順序佇列型別定義*/
sequeue *sq ; /*定義指向順序佇列的指標*/
初始化
演算法思路:
首先使用malloc()函式申請記憶體,申請成功後,設定隊頭和隊尾。
void init_seqqueue(seq_pqueue *q)
(*q)->front=(*q)->rear=maxsize-1;
return;
}
判斷是否為空
演算法思路:當隊頭和隊尾指標在同一位置時,隊空。q->rear == q->front)
bool is_empty_seqqueue(seq_pqueue q)
判斷是否為滿
演算法思路:隊頭指標在隊尾指標的下一位置時,隊滿 因為隊頭指標可能又重新從0位置開始,而此時隊尾指標是maxsize - 1,所以需要求餘;少用乙個儲存空間,也就是陣列的最後乙個存數空間不用
bool is_full_seqqueue(seq_pqueue q)
入隊bool in_seqqueue(datatype data,seq_pqueue q)
//入對
q->rear=(q->rear+1)%maxsize;
q->data[q->rear]=data;
return true;
}
出隊bool out_seqqueue(seq_pqueue q,datatype *d)
//出隊
q->front=(q->front+1)%maxsize;
*d=q->data[q->front];
return true;
}
遍歷佇列void show_seqqueue(seq_pqueue q)
printf("\n");
}
test
/* 用迴圈佇列實現如下功能:
* 使用者從鍵盤輸入整數,程式將其入對;
* 使用者從鍵盤輸入字母,程式將隊頭元素出隊;
* 並在每一次出隊和入隊之後列印佇列元素。
*/int main(int argc, const char *ar**)
else
//清空輸入緩衝區
while(getchar()!='\n');
} }return 0;
}
鏈式佇列typedef int datatype ; /*定義鏈佇列中資料元素的資料型別*/
typedef struct node
linklist ; /*鍊錶元素型別定義*/
typedef struct
linqueue ; /*鏈佇列型別定義*/
linkqueue *q ; /*定義指向鏈佇列的指標*/
初始化
void init_linkqueue(link_pqueue *q)
//申請頭結點空間
(*q)->front=(linkqueue_pnode)malloc(sizeof(linkqueue_node));
if((*q)->front==null)
(*q)->front->next=null;
(*q)->rear=(*q)->front;
return;
}
判斷空bool is_empty_linkqueue(link_pqueue q)
入隊bool in_linkqueue(datatype data,link_pqueue q)
//將資料儲存在申請的空間
new->data=data;
//將new指向的結點插入到鏈式佇列中
new->next=q->rear->next;
q->rear->next=new;
//讓rear指標指向新的隊尾結點
q->rear=q->rear->next;
return true;
}
出隊bool out_linkqueue(link_pqueue q,datatype *d)
//出隊
t=q->front;
q->front =q->front->next;
*d=q->front->data;
free(t);
return true;
}
遍歷void show_linkqueue(link_pqueue q)
printf("\n");
}
04 基本資料結構 佇列
一.佇列 概念 佇列是項的有序結合,其中新增新項的一端稱為隊尾,移除項的一端稱為隊首。當乙個元素從隊尾進入佇列時,一直向隊首移動,直到它成為下乙個需要移除的元素為止。最近新增的元素必須在隊尾等待。集合中存活時間最長的元素在隊首,這種排序成為 fifo,先進先出,也被成為先到先得。案例 佇列的最簡單的...
資料結構04 C語言佇列
前面三次的鏈結如下 資料結構01 單鏈表 資料結構02 雙鏈表 資料結構03 棧 本篇來說一下資料結構中的佇列。佇列是是一種先進先出 fifo 的線性表,只允許在一端進行插入 入隊 操作,在另一端進行刪除 出隊 操作。佇列中,允許入隊操作的一端叫做隊尾,允許出隊操作的一端叫做隊頭。和之前的棧一樣,c...
資料結構04
複習 1 什麼是資料結構 是專門研究資料關係和操作的學科,而非是計算方法。資料結構 演算法 程式 2 邏輯結構和物理結構 邏輯結構 集合 除了同屬於乙個集合,資料之間沒有任何關係。表 資料之間存在一對一關係。樹 資料之間存在一對多關係。圖 資料之間存在多對多關係。物理結構 順序結構 資料存在在連續的...