標籤:優先 gif 清空 辦理 不同的 text 刪除元素 先進先出 進程
隊列是一種列表,不同的是隊列只能在隊尾插入元素,在隊首刪除元素。隊列用於儲存按順序排列的資料,先進先出,這點和棧不一樣,在棧中,最後入棧的元素反而被優先處理。可以將隊列想象成在銀行前排隊的人群,排在最前面的人第一個辦理業務,新來的人只能在後面排隊,直到輪到他們為止。 隊列是一種先進先出的資料結構。隊列被用在很多地方,比如提交作業系統執行的一系列進程、列印任務池等,一些模擬系統用隊列來類比銀行或雜貨店裡排隊的顧客。 1.對隊列的操作 隊列的兩種主要操作是:向隊列中插入新元素和刪除隊列中的元素。插入操作也叫做入隊,刪除操作也叫做出隊。入隊操作在隊尾插入新元素,出隊操作刪除隊頭的元素。隊列的另外一項重要操作是讀取隊頭的元素。這個操作叫做peek()。該操作返回隊頭元素,但不把它從隊列中刪除。除了讀取隊頭元素,我們還想知道隊列中儲存了多少元素,可以使用length 屬性滿足該需求;要想清空隊列中的所有元素,可以使用clear() 方法來實現。 2.用數組實現的隊列 JavaScript 中的數組具有其他程式設計語言中沒有的優點,數組的push() 方法可以在數組末尾加入元素,shift() 方法則可刪除數組的第一個元素。 代碼:
<script type="text/javascript">function Queue(){ this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; this.back = back; this.toString = toString; this.empty = empty;}/*** 向隊尾添加一個元素*/function enqueue(element){ this.dataStore.push(element);}/*** 刪除隊首的元素:*/function dequeue(){ this.dataStore.shift();}/*** 讀取隊首的元素:*/function front(){ return this.dataStore[0];}/*** 讀取隊尾的元素:*/function back(){ return this.dataStore[this.dataStore.length - 1];}/*** 顯示隊列內的所有元素*/function toString(){ var retStr = ""; for (var i = 0; i < this.dataStore.length; ++i) { retStr += this.dataStore[i] + "\n"; } return retStr;}/*** 判斷隊列是否為空白*/function empty(){ if(this.dataStore.length == 0){ return true; }else{ return false; }}//測試代碼var q = new Queue();q.enqueue("Meredith"); q.enqueue("Cynthia");q.enqueue("Jennifer");console.log(q.toString());q.dequeue();console.log(q.toString());console.log("Front of queue: " + q.front());console.log("Back of queue: " + q.back());</script>View Code
列印:
資料結構與演算法JavaScript描述——隊列