alg4 鍊錶

2021-10-10 20:10:45 字數 1513 閱讀 3653

鍊錶是一種遞迴的資料結構,它或者為空(null),或者是指向乙個結點(node)的引用,該結點含有乙個泛型的元素和乙個指向另一條鍊錶的引用。

使用鍊錶實現棧

鍊錶的使用達到了我們的最優設計目標:

package section1_3;

public

class

stackoflinkedlist

public

intsize()

public

boolean

isempty()

public

void

push

(item item)

public item pop()

//測試用例

public

static

void

main

(string[

] args)

;int i=0;

while

(a[i]

!="/0"

)elseif(

!s.isempty()

) system.out.

print

(s.pop()

+" ");

i++;}

system.out.

print

("("

+s.size()

+"left on stack)");

}}

使用鍊錶實現佇列

同上,我們用煉表達到了最優設計目標:它可以處理任意型別的資料,所需空間總是和集合的大小成正比,操作所需的時間總是和集合大小無關。

package section1_3;

public

class

queueoflinkedlist

public

intsize()

public

boolean

isempty()

public

void

enqueue

(item item)

else

n++;}

public item dequeue()

n--;return item;

}//測試用例

public

static

void

main

(string[

] args)

;int i=0;

while

(a[i]

!="/0"

)elseif(

!q.isempty()

) system.out.

print

(q.dequeue()

+" ");

i++;}

system.out.

print

("("

+q.size()

+"left on stack)");

}}

alg4 排序 堆排序

堆排序可以分為兩個階段。在堆的構造階段中,我們將原始陣列重新組織安排進乙個堆中 然後在下沉排序階段,我們從堆中按遞減順序取出所有元素並得到排序結果。堆的構造 從右至左用sink 函式構造子堆。陣列的每個位置都已經是乙個子堆的根結點了,sink 對於這些子堆也適用。如果乙個結點的兩個子結點都已經是堆了...

alg4 排序 歸併排序

歸併操作 即將兩個有序的陣列歸併成乙個更大的有序陣列。歸併排序示意圖 歸併排序最吸引人的性質是它能夠保證將任意長度為n的陣列排序所需時間和nlogn成正比 它的最主要缺點則是它所需的額外空間和n成正比。原地歸併的抽象方法 它將涉及的所有元素複製到乙個輔助陣列中,再把歸併的結果放回原陣列中。merge...

alg4 子字串查詢 KMP演算法

kmp演算法的基本思想是當出現不匹配時,就能知曉一部分文字內容 因為在匹配失敗之前它們已經和模式相匹配 我們可以利用這些資訊避免將指標回退到所有這些已知的字元之前。kmp演算法的主要思想是提前判斷如何重新開始查詢,而這種判斷只取決於模式本身。在kmp子字串查詢演算法中,不會回退文字指標i,而是使用乙...