ADT Queue 四種實現

2021-10-10 08:32:12 字數 2764 閱讀 6688

講四種實現

(普通陣列模擬佇列實現不講,很輕便也很實用,不難自己隨意寫寫就行)

佇列和棧在使用時,即使運算元很多,但一般實時儲存在其中的資料並不多,於是我們採用迴圈佇列的方式來節省空間。

那迴圈佇列其實就是,當佇列中申請好的連續空間中已經填滿資料時(並不是指佇列已滿,佇列是只夾在front和rear之間的資料,包括front不包括rear)又從這段空間的開頭開始覆蓋儲存。

那要注意的幾個點就是

以上問題有相應公式

這裡有詳細**

#include

#include

#include

using

namespace std;

typedef

int elementtype;

typedef

struct circular

*queue;

queue createqueue

(int maxelements)

;bool

isempty

(queue q)

;bool

isfull

(queue q)

;int

length

(queue q)

;bool

enqueue

(elementtype x, queue q)

;elementtype front

(queue q)

;bool

frontanddequeue

(queue q, elementtype &e)

;int

main()

cout << endl;

for(

int i =

4; i <

9; i++

)enqueue

(i, newq)

;for

(int i =

0; i <

5; i++)if

(!isfull

(newq)

) cout <<

"isfull"

<< endl;

system

("pause");

return0;

}queue createqueue

(int maxelements)

bool

isempty

(queue q)

bool

isfull

(queue q)

intlength

(queue q)

bool

enqueue

(elementtype x, queue q)

elementtype front

(queue q)

/*這裡有個很有意思的事,這種佇列的front直接指向隊首,而rear指向隊尾的後一格

故這裡必須用引用來返回隊首值,來完成取隊首且出列操作

如果是front指向隊首前一格,而rear直接指向隊尾

那這裡就可以直接使用return來完成操作

elementtype frontanddequeue(queue q)

其他一些操作也同樣需要修改,說實話我是建議這種

front指向隊首前一格,而rear直接指向隊尾

但我現在懶得改了,道理自己想想就很好修改了

*/bool

frontanddequeue

(queue q, elementtype &e)

#include

#include

#include

using

namespace std;

typedef

int elementtype;

//整體使用引用來進行修改操作

typedef

struct node

*queueptr;

typedef

struct linkqueue

queue;

void

initiate

(queue &q)

;bool

isempty

(queue q)

;void

enqueue

(elementtype x, queue &q)

;bool

dequeueandfront

(queue &q, elementtype &e)

;void

destoryqueue

(queue &q)

;int

main()

destoryqueue

(newq)

;system

("pause");

return0;

}void

initiate

(queue &q)

bool

isempty

(queue q)

void

enqueue

(elementtype x, queue &q)

bool

dequeueandfront

(queue &q, elementtype &e)

void

destoryqueue

(queue &q)

}

有興趣就自己搜搜,反正很簡單

也沒啥難度,自己想想,我懶得打了

可以參考:

多型的四種實現

多型分為兩種 通用的多型和特定的多型。兩者的區別是前者對工作的型別不加限制,允許對不同型別的值執行相同的 後者只對有限數量的型別有效,而且對不同型別的值可能要執行不同的 通用的多型又分為引數多型 parametric 和包含多型 inclusion 特定的多型分為過載多型 overloading 和...

spring AOP四種實現方式

1.建立通知 定義乙個介面 public inte ce sleepable 然後寫乙個human類,他實現了這個介面 public human implements sleepable 2.編寫乙個sleephelper類,它裡面包含了睡覺的輔助工作,用aop術語來說它就應該是通知 public ...

java 實現四種常用排序

氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...