日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法章节 数组、链表、栈、队列

發布時間:2023/12/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法章节 数组、链表、栈、队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數組

概念與特性

1,數組是線性表,用一組連續的內存空間存儲?組具有相同類型的數據

2,最大的特性是?持按照下標O(1)時間復雜度內快速訪問數組元素

3,?維數組尋址公式:a[i]_addr = base_addr + i * data_type_size

操作與復雜度

1. 隨機訪問時間復雜度是O(1);
2. 在數組中間任意位置插?數據的時間復雜度是O(n);

3. 刪除數組中任意位置數據的時間復雜度是O(n)

應?場景數組是其他數據結構和算法的實現基礎,?如棧、隊列、堆、?分查找等
其他知識點1. 數組需要連續的內存空間,對內存的要求較?;
2. 數組中的數據連續存儲,對CPU緩存友好;
3. ?部分編程語?中,數組下標都是從0開始編號;
4. ?部分編程語?中,都提供了容器類型以?持動態數組(動態擴容);
5. 編程語?中的數組類型并不等同于數據結構中講的數組;
掌握程度能夠??動?實現?個動態數組類

鏈表

概念與特性1. 鏈表是線性表,不需要連續的內存空間來存儲元素,通過指針將串聯每個鏈表中的結點;
2. 常?的鏈表結構有:單鏈表、雙向鏈表、循環鏈表,其中雙向鏈表因為?持在O(1)時間復雜度內找到前驅結點,在實際開發中最常?;
操作與復雜度

1. 與數組對?,查找第i個元素的時間復雜度是O(n);

2. 在已知前驅結點的情況下,單鏈表中插?數據的時間復雜度是O(1);
3. 在已知前驅結點的情況下,單鏈表中刪除數據的時間復雜度是O(1);
注意:上?的插?、刪除操作,都是針對已知前驅結點的情況,如果未知前驅結點,在單鏈表中插?、刪除數據時間復雜度是O(n),?在雙向鏈表 中插?、刪除數據的時間復雜度仍然是O(1)。這也是雙向鏈表?單鏈表更常?的主要原因。

應?場景鏈表是其他數據結構和算法的實現基礎,?如跳表、散列表等
其他知識點1. 鏈表中的數據不連續存儲,對CPU緩存不友好;
2. 在實際的編程中,可定義有頭鏈表,也可以定義?頭鏈表;有頭鏈表指的是鏈表中的頭結點不存儲數據;
掌握程度

1. 熟練實現單鏈表、雙向鏈表、循環鏈表的定義和操作

2. 熟練實現經典的鏈表題?,?如反轉鏈表、鏈表求中間結點、合并有序鏈表、刪除鏈表倒數第K個結點等;

概念與特性1. 棧是?種操作受限的線性表,只能在?端插?刪除數據;
2. 棧的最?特性是先進后出;
操作與復雜度1. ?棧操作,在棧頂放?數據,時間復雜度是O(1);
2. 出棧操作,從棧頂取出數據,時間復雜度是O(1);
應?場景1. 函數調?棧;
2. 編譯器利?棧來實現表達式求值;
3. 瀏覽器中的前進后退功能的實現也會?到棧;
其他知識點1. 棧既可以?數組來實現,也可以?鏈表來實現;
2. 基于數組實現的?持動態擴容的棧的插?操作的均攤時間復雜度是O(1);
掌握程度1. 熟練利?數組實現?個棧;
2. 熟練利?鏈表實現?個棧;
3. 掌握基于數組實現的?持動態擴容的棧的插?操作的時間復雜度分析;
4. ?棧檢查括號是否匹配,?如:{[()]()[{}]}或[{()}([])]等都為合法格式,?{[}()]或[({)]為不合法的格式;

隊列

概念與特性1. 隊列是?種操作受限的線性表,只能在兩端插?、刪除數據;
2. 隊列的最?特性是先進先出;
?
操作與復雜度1. ?隊操作,在隊尾插?數據,時間復雜度是O(1);
2. 出隊操作,從隊頭取出數據,時間復雜度是O(1);
應?場景隊列常?在有限資源池中,?于排隊請求,?如數據庫連接池等;
其他知識點1. 隊列既可以?數組來實現,也可以?鏈表來實現;
2. 最常使?的隊列是基于數組實現的循環隊列;
掌握程度熟練實現?個循環隊列,重點是掌握隊列的判空和判滿條件;

總結

以上是生活随笔為你收集整理的算法章节 数组、链表、栈、队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。