陣列是一種線性表資料結構.它用一組連續的記憶體空間, 來儲存一組具有相同型別的資料,
連續的記憶體空間, 保證陣列的資料都連續的分布在物理介質上.
擁有隨機訪問和快速訪問的優勢,
快速訪問: cpu讀取資料一般是取出一塊兒連續的記憶體空間, 非常適合訪問陣列結構
但是有需要連續記憶體的缺點.
鍊錶是一種物理儲存單元上非連續、非順序的線性儲存結構,
通過指標將一組零散的記憶體塊(結點)串聯在一起.
組成鍊錶的結點可以在執行時動態生成, 非常適合元素的增, 刪操作
但訪問查詢是線性的, 必須乙個結點乙個結點的遍歷.常結合雜湊表克服訪問的限制
雜湊表其實是陣列的一種擴充套件, 用的是陣列支援按照下標隨機訪問資料的特性
可以支援非常高效的資料插入, 刪除, 查詢操作
但是雜湊表中的資料都是通過雜湊函式打亂之後無規律儲存的,
而且雜湊表是動態資料結構, 資料一直在改變.
為了以某種順序快速地遍歷資料, 可以結合雜湊表與鍊錶(或跳表)
資料結構都是為了某些使用場景建立, 棧和佇列的使用場景更加明確
棧是遵循操作順序先進後出lifo: last in first out),
操作受限(只允許在一端插入或刪除)的線性資料結構
根據實現可以分為, 順序棧: 陣列實現的棧; 鏈式棧: 鍊錶實現的棧
佇列是遵循操作順序先進先出lifo: last in first out,
操作受限(只允許在一端插入;在另一端刪除)的線性資料結構
當某個資料集合在一端插入, 一端刪除資料,並且滿足先進先出,我們就應該首選「佇列」這種資料結構
佇列也可以用陣列(順序佇列)和鍊錶(鍊錶佇列)實現, 但是出隊操作後, 順序佇列的前幾位變為空位, 達到佇列上限後需要進行資料搬移,最壞時間複雜度變為o(n).為了避免資料搬移操作,就有了迴圈佇列.
記憶體中的堆疊是真實存在的物理區, 資料結構中的堆疊是抽象的資料儲存結構.
記憶體空間在邏輯上分為三部分: **區, 靜態資料區和動態資料區, 動態資料區又分為棧區和堆區.
**區: 儲存方法體的二進位制**.高階排程(作業排程), 中級排程(記憶體排程),
低階排程(程序排程)控制**區執行**的切換.
靜態資料區: 儲存全域性變數, 靜態變數, 常量, 常量包括final修飾的常量和string常量.系統自動分配和**.
棧區: 儲存執行方法的形參, 區域性變數, 返回值.由系統自動分配和**.
堆區: new乙個物件的引用或位址儲存在棧區, 指向該物件儲存在堆區中的真實資料.
資料結構和演算法的重要性排行榜: 連續空間 > 時間 > 碎片空間 opencv基本資料結構
iplimage 首先介紹重要的成員變數 width和height表示了的尺寸。其次是depth和nchannels,depth是指畫素顏色的取值範圍,nchnannels為影象的通道,可以取1,2,3,4 origin變數定義了影象的原點,有兩個取值,分別是ipl origin bl和ipl or...
Python 基本資料結構
列表是python裡的內建的型別之一,可以新增和刪除其中的元素。如 role sam 33 dean 37 可以列表中包含列表,同一列表中包含不同型別的資料。下面介紹列表的一些通用操作,關於list的其他用法,可以通過help list 檢視。a 2,13,12,41,17,23 a 1 列表從0開...
基本資料結構定義
定義 棧是一種只能在一端進行插入或刪除操作的線性表。表中允許進行插入 刪除操作的一端稱為棧頂。棧頂的當前位置是動態的,棧頂的當前位置由乙個稱為棧頂指標的位置指示器指示。表的另一端稱為棧底。當棧中沒有資料元素時,稱為空棧。棧的插入操作通常稱為進棧或入棧,棧的刪除操作通常稱為退棧或出棧。特點 後進先出 ...