資料結構與演算法概述
阿新 • • 發佈:2021-02-19
資料結構與演算法概述
資料結構與演算法的關係
1)資料data 結構(structure)是一門研究組織資料方式的學科,有了程式語言也就有了資料結構.學好資料結構可以編寫出更加漂亮,更加有效率的程式碼。
2)要學習好資料結構就要多多考慮如何將生活中遇到的問題,用程式去實現解決。
3)程式 = 資料結構 + 演算法
4)資料結構是演算法的基礎, 換言之,想要學好演算法,需要把資料結構學到位。
例項
字串替換問題
public static void main(String args[]) {
String str = "JAVA JAVA Hello World!";
String newStr = str.replaceAll("JAVA", "ITSLJA~"); //演算法
System.out.println("newStr=" + newStr);
}
問:試寫出用單鏈表表示的字串類及字串結點類的定義,並依次實現它的建構函式、以及計算字串長度、字串賦值、判斷兩字串相等、求子字串、兩字串連線、求子字串在字串中位置等7個成員函式。
看幾個實際程式設計中遇到的問題
其他常見演算法問題:
- 修路問題 => 最小生成樹(加權值)[資料結構] + 普利姆演算法
- 最短路徑問題 => 圖 + 弗洛伊德演算法
- 漢諾塔 => 分支演算法
- 八皇后問題 => 回溯演算法
線性結構和非線性結構
資料結構包括:線性結構和非線性結構。
線性結構
1)線性結構作為最常用的的資料結構,其特點是資料元素之間存在一對一的線性關係。
2)線性結構有兩種不同的儲存結構,即順序儲存結構和鏈式儲存結構。順序儲存結構的線性表稱為順序表,順序表中的儲存元素是連續的。鏈式儲存結構的線性表稱為連結串列,連結串列中的儲存元素不一定是連續的,元素節點中存放資料元素以及相鄰元素的地址資訊。
非線性結構
非線性結構包括:二維陣列、多維陣列、廣義表、樹結構和圖結構。