資料結構 佇列 順序儲存結構佇列 鏈式儲存結構佇列

2021-07-25 17:39:04 字數 2766 閱讀 4754

佇列是一種只允許在一端進行插入操作,而在另外一端進行刪除操作的線性表,特徵是先進先出,包括:順序儲存結 構佇列/鏈式儲存結構佇列。重點說明:迴圈佇列和鏈隊。(在佇列中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 但是這樣會出現假溢位的情況,因為...