1. 程式人生 > 其它 >資料結構與演算法概述

資料結構與演算法概述

技術標籤:資料結構與演算法演算法資料結構

資料結構與演算法概述

資料結構與演算法的關係

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. 最短路徑問題 => 圖 + 弗洛伊德演算法
  3. 漢諾塔 => 分支演算法
  4. 八皇后問題 => 回溯演算法

線性結構和非線性結構

資料結構包括:線性結構非線性結構

線性結構

1)線性結構作為最常用的的資料結構,其特點是資料元素之間存在一對一的線性關係。
2)線性結構有兩種不同的儲存結構,即順序儲存結構鏈式儲存結構順序儲存結構的線性表稱為順序表,順序表中的儲存元素是連續的鏈式儲存結構的線性表稱為連結串列,連結串列中的儲存元素不一定是連續的,元素節點中存放資料元素以及相鄰元素的地址資訊。

3)線性結構常見的有:陣列、佇列、連結和棧。

非線性結構

非線性結構包括:二維陣列、多維陣列、廣義表、樹結構和圖結構。