佇列是對頭出、隊尾入的先進先出線性表。
需要兩個指標front和rear分別來指向隊頭和隊尾。
front指向隊頭元素的前乙個位置,rear總是指向隊尾元素。
進隊:rear+1為了解決這個問題,使用環形佇列。出隊:front+1
隊空條件:front=rear
隊滿條件:rear = maxsize - 1
但是這樣會出現假溢位的情況,因為退隊之後空出的位置就不能再用了。
進隊:rear =(rear+1)% maxsize
出隊:front = (front+1) % maxsize
隊空條件:front=rear
隊滿條件:front = (rear + 1)% maxsize
此外,還可以引入count來記錄元素個數來管理佇列。queue.c**如下,包含了測試函式queuetest( )已知對頭隊尾的指標,求元素個數count : count = (rear - front + maxsize)%maxsize
已知隊頭front、元素個數conut,求隊尾: rear = (front + conut)%maxsize
已知隊尾rear、元素個數conut,求隊頭front: front = (rear - count + maxsize)%maxsize
#include "queue.h"
void initqueue(queue &qu)
status enqueue(queue& qu, elemetype_squ e)
status dequeue(queue& qu, elemetype_squ &e)
bool queueempty(queue& qu)
int queuecount(queue& qu)
void queuetest()
queue.h
#ifndef _inc_queue
#define _inc_queue
#include #include #include #define error 0
#define ok 1
#define elemetype_squ int //順序棧資料型別
//#define elemetype_lqu int //鏈式棧資料型別
#define maxsize_squ 100 //順序棧最大容量
typedef int status;
typedef struct qutype,*queue;
void initqueue(queue& qu);
status enqueue(queue& qu, elemetype_squ e);
status dequeue(queue& qu, elemetype_squ& e);
bool queueempty(queue& qu);
int queuecount(queue& qu);
void queuetest();
#endif
資料結構 佇列 順序佇列 迴圈佇列 鏈佇列)
前言 一 佇列的定義 二 佇列的順序儲存結構 1.順序佇列的定義 2.迴圈佇列定義 3.迴圈佇列的基本操作 三 佇列的鏈式儲存結構 1.鏈佇列的定義 2.鏈佇列的基本操作 佇列也是一種線性表,其特殊性在於佇列的基本操作是線性表的子集。佇列按 先進先出 的規則進行操作,故稱其為操作受限的線性表。佇列 ...
資料結構 佇列實現(順序迴圈佇列 鏈式佇列)
佇列的介面 public inte ce qqueue 存在假溢位問題!不建議使用 使用模擬迴圈的方式避免假溢位 實現 package pers.zhang.queue author zhang date 2020 1 17 11 45 順序迴圈佇列 public class seqqueue im...
資料結構 順序表實現環形佇列
1 佇列的定義 佇列是一種特殊的線性表,線性表兩端都可以進行插入刪除,而佇列只能在隊頭刪除,隊尾插入。插入元素稱為入隊,刪除元素稱為出隊。2 佇列的特點 1 只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表 2 進行插入操作的一端稱為隊尾 入佇列 3 進行刪除操作的一端稱為隊頭 出...