簡單方法快速記憶陣列棧和佇列函式

2021-09-08 12:17:41 字數 1792 閱讀 9561

在js中,對陣列的操作是比較常見的,有時候,我們需要模擬棧和佇列的特性才能實現需求,今天來給大家用通俗易懂、簡潔明瞭的幾行文字,來告訴大家棧和佇列的幾個函式,如何快速記住。

首先,概念還是要知道的:

棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。

佇列(queue)是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

js中沒有專門棧和佇列型別,其實都是用陣列模擬的

棧:一端封閉,只能從另一端進出的陣列

filo(first in last out) 先進的後出

棧進出分為兩種:

結尾出入棧:

入: arr.push(值) 將值壓入陣列末尾(push之前棧裡是沒有 元素的)

出: var last=arr.pop() 【彈出來的數有用,所以用last接住】

從陣列末尾彈出1個元素 (新值永遠在末尾)

好處:新出入棧元素,不影響其他元素的位置

開頭出入棧: 入: arr.unshift(值) 將值插入到開頭【api】

出: var first=arr.shift();

從陣列開頭彈出第1個元素(新值永遠在開頭)

缺點: 每出入棧一次元素,其餘所有元素的位置都要改變(效率低一些)

何時使用棧: 保證始終使用陣列中最新的元素時

eg:ecs 執行環境棧

瀏覽器永遠訪問最新的**,外面是歷史記錄棧

佇列: 只能從一端進入,從另一端出

fifo(first in first out)  先進先出

從結尾入佇列: arr.push(值)

從開頭出佇列: var first=arr.shift()

何時使用佇列: 希望按照先來後到的順序使用資料時

函式速記:

pop()與shift()都是刪除

pop()刪除陣列中的最後乙個元素,並返回該元素

shift()刪除陣列中的第乙個元素,並返回該元素

push()與unshift()都是插入

push()新增乙個或多個新元素到陣列的結尾,返回陣列長度

unshift()新增乙個或多個新元素到陣列的開頭,返回陣列長度

(即 :

單詞短的為刪除,

單詞長的為插入,

刪除返回該元素,

插入返回該長度)

shift與unshift都是開頭,pop和push都是結尾

(帶shift的為開頭,帶p的為結尾)

簡單方法快速記憶陣列棧和佇列函式

在js中,對陣列的操作是比較常見的,有時候,我們需要模擬棧和佇列的特性才能實現需求,今天來給大家用通俗易懂 簡潔明瞭的幾行文字,來告訴大家棧和佇列的幾個函式,如何快速記住。首先,概念還是要知道的 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被...

關於linux的vi命令快速記憶方法

linux的vi命令是linux操作最基本的文字工具,主要採用快捷方式,本文說說如何快速記憶。一 三個工作狀態 1 命令狀態 任何時候esc鍵,都可以進入命令狀態。2 編輯狀態 在命令列顯示 insert模式 在命令狀態按 i 即進入編輯模式 當然,還有n多其他按鍵,也能進入編輯狀態 i,a,a,o...

vue生命週期的快速記憶方法

概念 從vue例項建立 執行 到銷毀期間,總是伴隨著各種各樣的事件,這些事件統稱為生命週期。而生命週期中的各種事件被稱為生命週期鉤子函式。建立期間的生命週期函式 beforecreate 在例項初始化時同步呼叫。此時資料觀測 事件等都尚未初始化。created 在例項建立之後呼叫。此時已完成資料繫結...