1. 程式人生 > >資料結構學習筆記(二)

資料結構學習筆記(二)

一、棧

      棧是一種操作受限的資料結構,只支援入棧和出棧操作。後進先出(LIFO)是它的最大的特點。棧既可以通過陣列實現,也可以通過連結串列實現。不管基於陣列還是連結串列,入棧、出棧的時間複雜度都為O(1)。

二、佇列

      佇列最大的特點是先進先出,主要的兩個操作是入隊和出隊。更棧一樣,它既可以用陣列來實現,也可以用連結串列拉實現。用陣列實現的較順序佇列,用連結串列實現的叫鏈式佇列。用陣列實現佇列的時候,會有資料搬移操作,要想解決資料搬移問題,就需要使用迴圈佇列。

三、無鎖併發佇列的實現

      無鎖是一種樂觀的策略,它會假設對資源的訪問時沒有衝突的。無鎖策略使用一種比較交換的技術(CAS)來鑑別執行緒是否發生衝突,一旦檢測到衝突發生,就重試當前操作直到沒有衝突為止。
無鎖的好處:

  • 在高併發的情況下,它比有鎖的程式擁有更好的效能。
  • 它天生是死鎖免疫的。