首先我想先說一下關於集合的資料結構的一些內容,想要了解乙個集合就要理解它的結構,當然也只是最表面的東西。
佇列(queue)簡稱隊,它和棧堆一樣,也是一種運算受限的線性表,其限制是僅允許在表的一段進行插入,在表的另一端進行刪除。
採用該結構的集合,對元素的訪問有下面特點:
1. 先進先出:存進去的元素要在它前面的元素取出後才能取出。就類似火車過山洞,車頭先進去,車頭先出來。
2. 佇列的入口和出口是各佔一側。
陣列(array)是有序的元素序列,當建立乙個陣列時,陣列是在記憶體中開闢一段連續的空間,並在此空間存放元素。並且每個元素都有自己的編號,依序排列。
因為這樣的結構陣列有下列幾個特點:
1. 查詢元素快:每個元素都有自己索引(可看作是編號),可以通過索引快速定位到元素的位置。
2. 元素的增刪非常慢:當陣列增加元素時,需要建立乙個新的陣列,先將指定新元素儲存到指定索引中,再將原陣列的元素根據索引複製到新陣列對應索引的位置。如果新元素沒有指定索引,將新增至末尾。
3. 刪除元素時,也需要建立乙個新陣列,將刪除元素之外的其他元素複製到新陣列。
鍊錶(linked list)是由一系列結點組成(鍊錶的每乙個元素都是乙個結點),結點可以在執行時動態生成(這裡我具體也不知的啥意思,希望有懂得牛人給我解解惑)。每個結點都有兩個部分,乙個是儲存陣列元素的資料域,另乙個是儲存下乙個結點位址的指標域。
鍊錶是有分單向鍊錶和雙向鍊錶的,這裡我只說單向鍊錶。
採用鍊錶結構的集合有如下幾個特點:
* 多個節點之間,通過位址進行連線。
* 查詢元素慢:想要查詢某個元素,需要通過連線的結點,一次向後查詢元素
* 增刪快:增加和刪除元素,增加元素只要將某乙個指標斷開,新元素的前乙個元素的指標域指向新元素指標,刪除也是類似如此。可以將其比喻成火車的每一節車廂,增加車廂就斷開鍊子加進去。
節點可以是紅色的或者黑色的
根節點是黑色的
葉子節點(特指空節點)是黑色的
每個紅色節點的子節點都是黑色的
任何乙個節點到其每乙個葉子節點的所有路徑上黑色節點數相同
紅黑樹的特點:
速度特別快,趨近平衡樹,查詢葉子元素最少和最多次數不多於二倍
2077出了這麼多天,都沒有玩過呢,今天提早結束玩會2077,哈哈哈
gdkoi前的複習
又浪了一天 整理下學的,這兩天都溫習 預習 一下吧。27號就是gdkoi了好怕 資料結構 樹 平衡樹 線段樹 樹狀陣列 樹套樹 可持久化還有主席樹 樹鏈剖分 line cut tree 字串 ac自動機 字尾陣列 字尾自動機 演算法 網路流 最大流sap 最小費用最大流 spfa以及zkw費用流 二...
關於資料庫的相關問題集合
php 連線資料庫 1.資料庫的連線問題 link mysql connect localhost root root or die 資料庫連線失敗1001 mysql error 打通資料庫的連線,返回控制代碼給 link conn mysql select db msb link or die ...
面試準備前的複習 Redis
redis 基於c k v資料庫 非關係型資料庫 todo 什麼是非關係型資料庫 文件型資料庫。todo 為什麼快 安裝目錄 redis bin redis cli redis server client要選擇 h 主機位址 p 埠號 redis配置 安裝目錄 redis redis.conf 1....