佇列模型:
1.在表的末端插入元素(入隊),在表的開頭刪除元素(出隊),表的末端又叫隊尾,表的開頭又叫隊頭
佇列實現:
1.陣列實現:使用迴圈陣列的方式來實現佇列的插入和刪除,具體實現如下--
1.1定義乙個陣列thearray、定義頭部位置front和尾部位置back
1.2入隊在隊尾插入元素,即新元素放到back+1位置上,出隊彈出隊頭元素,即彈出front位置上的元素,front位置向後移一位,即變為front+1
1.3當front或back到達陣列的尾端,它就繞回到開頭
1.4當back=front-1時,說明此時隊列為空;當佇列中存在thearray.length-1個元素說明佇列已滿
2.鍊錶實現:使用雙向鍊錶的方式來實現佇列的插入和刪除,具體實現如下--
2.1定義乙個雙向鍊錶節點node,包含指向前乙個節點的變數prev和指向後乙個節點的變數next
2.2入隊在雙向鍊錶的末尾插入元素,出隊彈出雙向鍊錶頭部元素
2.3當node為null時說明隊列為空,當雙向鍊錶的大小達到最大值(預設為2^31),說明佇列已滿
佇列應用(簡單):
1.排隊論,適用於先進後出的使用場景,而且插入佇列的元素不會輕易更改,不會撤銷
參考:資料結構與演算法分析
ADT(抽象資料型別) 佇列
佇列是先進先出,直接和排隊模擬即可,佇列的實現較堆疊要麻煩一些,比如用靜態陣列來實現佇列,每次移除資料後原來的位置就空起了,使用乙個指標front指向佇列頭部,用另乙個指標rear指向佇列尾部,比如乙個5個元素的陣列,刪除3個元素後,本來陣列還可以繼續存入3個元素,但那3個元素則無法再次利用了。為此...
抽象資料型別
本篇文章簡單的講解下表 棧 佇列。首先先了解一下什麼是抽象資料型別。它是這麼定義的 抽象資料型別 abstract data type,即adt 是帶有一組操作的一些物件的集合。那麼adt怎麼理解呢?首先你只需要記住表 集合 圖以及與他們各自的操作一起形成的物件都可以被看做抽象資料型別.這就跟整型 ...
抽象資料型別 之佇列的構建
注意搞清楚乙個問題,那就是佇列的操作中 入隊是從最後麵入,出隊是從最前面出。然而棧操作的入隊出隊都是從最後面 最上面 出。include include include typedef int elemtype typedef int status typedef struct node node ...