資料結構之佇列

2021-08-19 07:08:41 字數 1892 閱讀 1887

1 . 佇列的基本概念

只允許在一端進行插入資料操作(隊尾),在另一端進行刪除資料操作(隊頭)的特殊線性表。佇列具有先進先出的特性。 2

. 佇列儲存結構

順序佇列:

隊頭指標不動----要大量搬移元素(出佇列時所有元素向前移動)

隊頭指標移動----存在假溢位

迴圈佇列

迴圈佇列如何解決佇列空或者滿?(三種方法)

a 少用乙個儲存空間(佇列空:front=rear.佇列滿:(rear+1)%size==front.)

b設定乙個標記位 :入佇列 flag置為1,出佇列flag置為0.當(flag==0)&&(front==rear)隊列為空,當(flag==1)&&(front==rear)隊列為滿。

c 設定乙個計數器,記錄佇列中元素的個數,當count==0時隊列為空,count==size時隊列為滿。 

鏈式佇列---用鍊錶作為佇列的底層資料結構

實現鏈式佇列的以下操作:

typedef int datatype;

typedef struct node

node, *pnode;

typedef struct queue

queue;

// 佇列的初始化

void queueinit(queue* q);

// 入佇列

void queuepush(queue* q, datatype data);

// 出佇列

void queuepop(queue* q);

// 取隊頭元素

datatype queuefront(queue* q);

// 取隊尾元素

datatype queueback(queue* q);

// 獲取佇列中元素的個數

int queuesize(queue* q);

// 檢測佇列是否為空

int queueempty(queue* q);

下邊是實現**:

#include#include#include#define null 0

typedef int datatype;

typedef struct node

node, *pnode;

typedef struct queue

queue;

// 佇列的初始化

void queueinit(queue* q)

pnode buynode(datatype data)

temp->_data = data;

return temp;

}// 入佇列

void queuepush(queue* q, datatype data)

else

}// 出佇列

void queuepop(queue* q)

q->_phead = q->_phead->_pnext;

}// 取隊頭元素

datatype queuefront(queue* q)

return q->_phead->_data;

}// 取隊尾元素

datatype queueback(queue* q)

return q->_ptail->_data;

}// 獲取佇列中元素的個數

int queuesize(queue* q)

int count = 1;

pnode temp ;

temp = q->_phead;

while (temp!=q->_ptail)

return count;

}// 檢測佇列是否為空

int queueempty(queue* q)

return 0;

}

資料結構之佇列

八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...

資料結構之佇列

與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...

資料結構之佇列

一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...