系統程式設計師成長計畫 動態陣列(一)

2021-04-26 01:16:54 字數 433 閱讀 9429

雙向鍊錶和動態陣列是最簡單的兩種資料結構,在研讀大量源**之後,我發現正是這兩種最簡單的資料結構有著最廣泛的應用。像平衡二叉樹這樣的複雜資料結構,除了學習之外,你永遠都不會寫第二遍,甚至連使用的機會都沒有,而雙向鍊錶和動態陣列則會在開發中反覆的運用。也正是由於這個原因,我們才選擇雙向鍊錶和動態陣列作為學習的載體。

這裡請讀者做兩件事:

o 思考雙向鍊錶和動態陣列的特點及適用條件。

在學習完基本的資料結構和設計方法後,很多人在解決實際問題時束手無策:他們不知道什麼時候應該用什麼資料結構和方法。所以在學習的過程中,應該經常問這個問題,這個東西在什麼時候能派上用場?千萬不要為了學習而學習,而是要為實際應用而學習。

o 按前面在雙向鍊錶中學習到的方法實現動態陣列。

前面我們剛學習了併發程式設計的基礎知識,由於我們現在的主要目的是學習,為了專注於我們要學習的內容,後面不再考慮併發問題。

系統程式設計師成長計畫 動態陣列(二)

對比雙向鍊錶和動態陣列 在c語言中,陣列的長度是事先確定的,不能在執行時動態調整。所謂動態陣列就是它的長度可以根據儲存資料多少自動調整,這需要我們用程式來實現。對比雙向鍊錶和動態陣列,我們會發現 o 動態陣列本身占用一塊連續的記憶體,而雙向鍊錶的每個結點要占用一塊記憶體。在頻繁增刪資料的情況下,雙向...

系統程式設計師成長計畫 動態陣列(四)

有序陣列的兩個應用 前面我們學習了陣列的排序方法,通常我們對陣列排序不是為了排序而排序,而是為了其它的用途才排序的,這裡了解一下有序陣列的兩個常見應用。二分查詢 二分查詢也稱為折半查詢,它的前提是陣列中的元素是有序的。演算法過程如下 假定陣列為公升序 先拿要查詢的元素與陣列中間位置的元素相比較,如果...

系統程式設計師成長計畫 動態陣列(三)(上)

作者 李先靜 排序大多數高階排序演算法都是針對陣列實現的,接下來我們一起學習一下幾種排序演算法,學習演算法本身只是我們的目標之一,最重要的是要從中學習一些思考問題的方法。對比不同演算法的特點,也有助於我們在設計時做出正確的選擇。這裡我們請讀者實現氣泡排序 快速排序和歸併排序。要求如下 o 演算法同時...