資料結構與演算法(五)

2021-09-25 00:12:57 字數 668 閱讀 3587

三根針xyz,x上64個圓盤

設計思路:

if n=1時,x->z

else 執行n-1的操作,直到n-1=1

由零個或多個字元組成的有限序列

是用一組位址連續的儲存單元來儲存串中的字串行,按照預定義的大小,為每個定義的字串變數分配乙個固定長度的儲存區,一般用定長陣列來定義

一般用順序儲存

樸素的模式匹配演算法

有兩個字串s和t,長度分別為n和m。首先s[1]和t[1]進行比較,若相等,則再比較s[2]和t[2],一直到t[m]為止;若s[1]和t[1]不等,則t向右移動乙個字元的位置,再依次進行比價。

核心就是避免不必要的回溯,問題是由模式串決定的,不是由目標決定 注:

失配元素和之前的元素相同,則應回溯到最開始的元素

定義:是n(n>=0)個結點的有限集。

結點擁有的子樹數稱為結點的度,樹的度取樹內各結點的度的最大值

結點的 子樹的根稱為結點的孩子(child),相應的該結點稱為孩子的雙親(parent),同一雙親的孩子之間稱為兄弟(sibling)

結點的祖先是從根到該結點所經分支上的所有結點。

如果將樹中結點的各子樹看成從左至右是有次序的,不能互換的,則稱該樹為有序樹,否則稱為無序樹。

森林是m(m>=0)顆互不相交的樹的集合。對樹中每個結點而言,其子樹的集合即為森林。

資料結構與演算法(五)

雙端鍊錶和雙向鍊錶 一.雙端鍊錶 1.什麼是雙端鍊錶 鍊錶中儲存著對最後乙個鏈結點的引用的鍊錶 2.從頭部進行插入 要對鍊錶進行判斷,如果為空則設定尾結點為新新增的結點。3.從尾部進行插入 如果鍊錶為空,則直接設定頭結點為新新增的結點,否則設定尾結點的後乙個結點為新新增的結點。4.從頭部進行刪除 判...

資料結構與演算法 實驗五

1 編寫函式bfindex string s,int start,string t 實現brute force演算法,其中s為主串,start為子串在主串中的查詢位置,t為子串。程式可參考書本例子。2 設串採用靜態陣列儲存結構,編寫函式實現串的替換replace s,start,t,v 即要求在主串...

演算法與資料結構 五 基本排序演算法

前面幾篇基本上把基本的資料結構都回顧完了,現在開始回顧那些常見的排序演算法。排序是將一組無序的資料根據某種規則重新排列成有序的這麼乙個過程,當時在大學需要我們手工自己實現的主要有三種 選擇排序 插入排序和氣泡排序。因為它比較簡單,所以這裡把他們放到一起作為最基本的排序演算法。插入排序的思路是這樣的 ...