佇列是一種只允許在一端進行插入操作,而在另外一端進行刪除操作的線性表,特徵是先進先出,包括:順序儲存結 構佇列/鏈式儲存結構佇列。重點說明:迴圈佇列和鏈隊。(在佇列中front為隊頭指標; rear為隊尾指標)
佇列:
佇列空的條件:rear == front
佇列滿的條件:(rear + 1) % queuesize == front
計算佇列長度的公式:( rear - front + queuesize ) % queuesize
迴圈佇列實現:
#include
#include
using namespace std;
class sqqueue
bool push(int val); //隊尾:入隊
bool gettop(int *rtval); //獲取隊頭元素,但不刪除
bool pop(int *rtval); //獲取隊頭元素,並且刪除
bool isempty(); //判斷佇列是否為空
void destroy(); //銷毀佇列
int getlength(); //獲取佇列的長度
private:
bool isfull();
static const int a = 10;
int arr[a];
int front; //隊頭指標
int rear; //隊尾指標
};bool sqqueue::isfull()
bool sqqueue::push(int val)
arr[rear] = val;
rear = (rear + 1) % a;
return true;
}bool sqqueue::isempty()
bool sqqueue::gettop(int *rtval)
*rtval = arr[front];
return false;
}bool sqqueue::pop(int *rtval)
*rtval = arr[front];
front++;
return true;
}void sqqueue::destroy()
int sqqueue::getlength()
int main()
cout<<"length = "<
<鏈式佇列實現:
#include#include
#include
#include
using namespace std;
class node //鏈式儲存節點
int data;
node *next;
};class hnode
;hnode::hnode()
bool hnode::isempty()
bool hnode::push(int val)
else
return true;
}bool hnode::gettop(int *rtval)
if (isempty())
*rtval = front->data;
return true;
}bool hnode::pop(int *rtval)
if (isempty())
gettop(rtval);
if (front->next == nullptr)//尾節點
else //非尾節點
return true;
}void hnode::destroy()
rear = nullptr;
}int main()
cout<<"2.獲取隊首元素,不刪除-------------------------------------"<
對於鏈式佇列和迴圈佇列的比較可以從兩個方面考慮。時間上:兩者基本操作都是常數時間,即o(1),不過迴圈佇列是事先申請好空間,使用期間不再釋放,而對於鏈式佇列,每次申請和釋放節點也會存在時間開銷,若入隊出隊頻繁,則兩者還是有一定差異的;空間上:迴圈佇列必須有乙個固定長度,故有儲存元素個數和空間浪費的問題,而鏈隊則不存在此問題,雖然需要一定空間儲存指標域,但是還是可以接受的,故空間上鏈隊更加靈活。
資料結構 佇列 順序佇列 迴圈佇列 鏈佇列)
前言 一 佇列的定義 二 佇列的順序儲存結構 1.順序佇列的定義 2.迴圈佇列定義 3.迴圈佇列的基本操作 三 佇列的鏈式儲存結構 1.鏈佇列的定義 2.鏈佇列的基本操作 佇列也是一種線性表,其特殊性在於佇列的基本操作是線性表的子集。佇列按 先進先出 的規則進行操作,故稱其為操作受限的線性表。佇列 ...
資料結構 佇列靜態順序儲存結構
1 佇列的基本概念 佇列 queue 也是運算受限的線性表。是一種先進先出 first in first out 簡稱fifo 的線性表。只允許在表的一端進行插入,而在另一端進行刪除。隊首 front 允許進行刪除的一端稱為隊首。隊尾 rear 允許進行插入的一端稱為隊尾。例如 排隊購物。作業系統中...
資料結構 環形佇列 迴圈佇列 順序儲存
佇列是對頭出 隊尾入的先進先出線性表。需要兩個指標front和rear分別來指向隊頭和隊尾。front指向隊頭元素的前乙個位置,rear總是指向隊尾元素。進隊 rear 1 出隊 front 1 隊空條件 front rear 隊滿條件 rear maxsize 1 但是這樣會出現假溢位的情況,因為...