回覆列表
  • 1 # 使用者4327051097521

    資料結構都是一樣的,棧呀,佇列呀,樹呀,如果去看它的實現會發現,其實無非用線性表(陣列、連結串列)來儲存資料,然後又實現了一些函式,出隊呀,出棧呀,供我們呼叫,就相等於封裝了一層。

    又有一些問題,我們發現每次只取出陣列的第一個元素,或者新增元素到末尾,不訪問陣列的其他元素,那麼我們再封裝個類,提供兩個函式,頭部取出個元素,末尾添加個元素,然後叫作佇列。

    試想一下,如果你 bfs 裡不用佇列,而是隻用陣列,去實現也是可以的,然後你會發現,你得用個變數儲存當前的個數,出隊的話,你還得寫個 for 迴圈依次前移實現刪除。而這些無非是佇列實現的功能,我們直接呼叫豈不是更好。這樣在 bfs 演算法裡我們專注於 bfs 的邏輯就行了,不用再管底層刪除,新增實現是怎麼實現的,而是呼叫就夠了。

    就像函式一樣,比如排序函式,解決問題的時候你經常用到,然後就封裝成了函式,這樣當你解決問題的時候,需要排序就不用再用兩個 for 迴圈, balabala 的寫了,直接呼叫就可以了。為什麼有了棧、佇列這些資料結構,其實也是在解決問題的時候,大家發現經常遇到一些問題,需要這樣一個結構,然後抽象出來,總結出了資料結構。

  • 中秋節和大豐收的關聯?
  • 沙特國王第二次換王儲沙特國王薩勒曼的兒子是誰?