資料結構與演算法C 版(筆記)

2021-05-25 01:53:47 字數 1551 閱讀 1610

跳躍鍊錶:

跳躍鍊錶主要是為了解決單鏈表和雙鏈表查詢複雜的問題提出的。其時間複雜度為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 輸...