跳躍鍊錶:
跳躍鍊錶主要是為了解決單鏈表和雙鏈表查詢複雜的問題提出的。其時間複雜度為o(lgn),主要的操作時查詢和插入:
一、 查詢
目的:在跳躍表中查詢乙個元素x
在跳躍表中查詢乙個元素x,按照如下幾個步驟進行:
i) 從最上層的鏈(sh)的開頭開始
ii) 假設當前位置為p,它向右指向的節點為q(p與q不一定相鄰),且q的值為y。將y與x作比較
(1) x=y 輸出查詢成功及相關資訊
(2) x>y 從p向右移動到q的位置
(3) x用c++進行程式設計實現時:每個節點的指標如何處理?可以用乙個指標陣列root【level】來存放該節點的指標,陣列大小取決於該節點的級數,該節點用乙個指標指向該陣列。
自組織鍊錶:
幾種組織方式:前移法、換位法、級數法、排序法
標準模板庫中的表list
#include
listlst;
list(iterator first, iterator last)//構建list ,有first到last間的元素
list()
list(size_type n, const t&el=t())//n個el副本
list(const list&lst)//複製建構函式
t& back();
t& front();
void clear();
vool empty()const;
iterator begin();返回第乙個節點的迭代器
iterator end();返回超過最後乙個節點的迭代器
iterator erase(iterator i);刪除迭代器i所引用的節點,返回乙個迭代器,該迭代器引用刪除節點後面的元素
iterator erase(iterator first,iterator last);
iterator insert(iterator i, const t & el=t());
iterator insert(iterator i, size_type n, const t&el);//在i的前面插入n個el
void pop_back();
void pop_front();
void push_front(const t&el)
void push_back(const t&el)
void remove(const t &el)//刪除所有的el
void sort()//按照從大到小的順序排序
void sort(comp f)//按照boolean 函式f制定的順序排序
void unique()//刪除重複元素
stl中的雙端佇列deque:
list 中沒有at()函式,相當於operation,deque中增加了該功能
list 中只能對迭代器自增或自減,而deque中可以增加任何整數
const t& at(size_type n) const 返回雙端佇列n處的元素
t& operator
!!!stl雙端佇列並沒有實現為鍊錶,而是實現為指向資料塊或陣列的指標陣列
資料結構與演算法C 版筆記 排序 Sort 下
5 堆排序 heapsort 在接觸 堆排序 前,先回顧一下資料結構c 版筆記 樹與二叉樹 其中提到了 完全二叉樹 有一些重要的數學特性 上圖就是一顆完全二叉樹,如果每個節點按從上到下,從左至右標上序號,則可以用陣列來實現順性儲存,同時其序號 1 如果i 1,則序號為i的父結節序號為i 2 這裡 指...
資料結構與演算法 筆記 資料結構與演算法筆記 棧
以前學習的時候都沒怎麼好好的做過筆記,總是東記一點,西寫一點,甚至都不做筆記,導致後面找的時候找不到,最後還是求助搜尋引擎浪費掉很多時間。好腦筋不如個爛筆頭呀。這次又重新學習python的資料結構及演算法 中國mooc上的公開課 就好好做個筆記吧。棧是一種只能在一端進行插入和刪除的線性資料結構。一般...
資料結構與演算法Python版學習筆記一
用input獲取輸入時,不能加提示符 多行輸入,每一行對應乙個input函式,根據題目要求的資料型別進行轉換 如果每行乙個整數,則可以寫入以下 a int input 單行輸入多個變數 以字串形式儲存 輸入兩個變數 a,b input split 輸入三個變數 a,b,c input split 輸...