鍊錶 PowerShell版

2021-09-22 13:20:07 字數 1667 閱讀 5677

鍊錶是由一系列節點串連起來組成的,每乙個節點包括數值部分和指標部分,上一節點的指標部分指向下一節點的數值部分所在的位置。

在c語言中我們有兩種方式來定義鍊錶——

1、定義結構體:來表示鍊錶中的節點,節點中包含數值部分和指標部分。將乙個節點的指標部分指向另乙個節點的數值部分,這兩個結構體之間就形成了乙個鍊錶。

2、不定義結構體:用乙個陣列來表示鍊錶的數值部分,用另外乙個陣列來表示每個數值所對應的指標部分。

在powershell中定義乙個鍊錶更加簡潔:

$linkedlist = new-object system.collections.generic.linkedlist[hashtable]
其中hashtable相當於我們在c語言中定義的結構體中的數值部分,而對於鍊錶中數值進行的操作都被封裝成了一系列鍊錶物件的方法。

現在我們舉乙個現實生活中的例子——

考試結束,老師排好了乙個成績單(按成績從高到低),現在來了個插班生,我們要把這個插班生的考試成績插入到本班的成績單中。

首先我們寫乙個方法,將排好的成績單錄入到乙個鍊錶中:

#

initial the students' scores.

function initial($linkedlist

)) }

}

然後我們寫乙個方法,將插班生的成績插入到已排好序的成績單鍊錶中:

#

add student into the list by score.

function insertstudent($linkedlist

)else

)

$flag = $false

} }

}

最後我們來執行這兩個方法,對成績單鍊錶進行初始化和插入操作,並顯示插入資料後的鍊錶:

write-host "

---now begin initial---

" -foregroundcolor green

initial

$linkedlist

write-host "

---now begin insert---

" -foregroundcolor green

insertstudent

$linkedlist

write-host "

---result---

" -foregroundcolor green

$linkedlist

執行結果如下:

我們可以看到,我們不用再去像在c語言中一樣對指標的指向進行操作,取而代之的是一系列已經封裝好了的屬於鍊錶物件本身的方法和屬性。比如:

鍊錶物件的第乙個節點——

$linkedlist.first
某一結點的下一節點——

$node.next
在鍊錶的某一節點前插入乙個節點——

$linkedlist.addbefore($currentnode, @)

氣泡排序 PowerShell版

氣泡排序的過程 第一輪排序 如果有5個數從大到小排序,第一位數與第二位數進行比較,如果第一位小,則第一位數和第二位數交換位置。之後按照這個邏輯對第二位數與第三位數,第三位數與第四位數,第四位數與第五位數分別進行比較與交換。一共會進行4次比較,交換次數小於等於4。這樣一輪比較下來,最小的數就排在了最後...

桶排序 PowerShell版

scores 88,13,99,26,62,64,77 score s scope is from 0 100 sortedscore new object system.collections.arraylist for i 0 i le 100 i for i 1 i le scores.cou...

集合鍊錶版

includeusing namespace std struct listnode class jihe jihe jihe jihe jihe jihe jihe const jihe 複製建構函式 jihe jihe jihe 移動建構函式 q1 jihe jihe operator cons...