佇列的基本操作

2021-07-25 08:54:32 字數 1688 閱讀 9279

佇列的基本概念

佇列(queue):也是運算受限的線性表。是一種先進先出(first in first out ,簡稱fifo)的線性表。只允許在表的一端進行插入,而在另一端進行刪除。

隊首(front) :允許進行刪除的一端稱為隊首。

隊尾(rear) :允許進行插入的一端稱為隊尾。

例如:排隊購物。作業系統中的作業排隊。先進入佇列的成員總是先離開佇列。  

佇列中沒有元素時稱為空佇列。在空佇列中依次加入元素a1, a2, …,an之後,a1是隊首元素,an是隊尾元素。顯然退出佇列的次序也只能是a1, a2, …,an ,即佇列的修改是依先進先出的原則進行的,如圖所示:

利用一組連續的儲存單元(一維陣列)依次存放從隊首到隊尾的各個元素,稱為順序佇列。

對於佇列,和順序棧相類似,也有動態和靜態之分。本部分介紹的是靜態順序佇列,其型別定義如下:

#include #include #ifndef _list_h

#define _list_h

#define n 100

typedef char datatype;

typedef struct _queue

queue;

//初始化

void initlist(queue *q);

//判斷佇列是否為空

int isempty(queue *q);

//入佇列

void enqueue(queue *q, datatype value);

//出佇列

datatype dequeue(queue *q);

//獲得隊頭元素

datatype gethead(queue *q);

//輸出佇列元素

void printdata(queue *q);

#endif //_list_h

//以上函式的實現

#include "list.h"

//佇列的初始化

void initlist(queue *q)

//判讀佇列是否為空

int isempty(queue *q)

else }

//入佇列

void enqueue(queue *q, datatype value)

else }

//出佇列

datatype dequeue(queue *q)

else }

//獲得隊頭元素

datatype gethead(queue *q)

else }

//輸出佇列元素

void printdata(queue *q)

else }

}

//測試

#include #include "list.h"

int main(void)

else

// for (datatype i = 'a'; i < 'f'; ++i)

//

printf("%c\n", gethead(&q));

printdata(&q);

return 0;

}

佇列的基本操作

include stdafx.h includeusing namespace std typedef struct node typedef struct queue queue insertqueue queue q,char value return q queue deletequeue q...

佇列的基本操作

本程式主要是實現了迴圈佇列的基本操作,包括insert,remove,peek,size等操作 package demo3 class queue 插入操作 public void insert long j quearray rear j 佇列是在隊尾插入 nitems 刪除 public lon...

佇列的基本操作

鏈式儲存 typedef int qelemtype typedef int status 具體資料型別具體定義 typedef struct qnode 佇列結點結構體 qnode,queueptr typedef struct 鏈佇列型別 linkqueue status initqueue l...