資料結構和數學很類似都是比較抽象的,而往往實際問題都是非常複雜的,所以要先掌握最基本最抽象最特殊的規律。
學習資料結構首先要掌握一門計算機語言,起碼要知道語法,能利用它完成一些基本程式,就像首先要掌握數學最基本的加減乘除,定理之類的規則。
其次要知道資料結構和演算法是分不開的,學習資料結構的同時也需要一定的演算法學習,一般來說演算法實現的過程需要用到資料結構的知識。
比如我們一開始學習順序表
順序表最基本的就是陣列了,我覺得這個不需要什麼太多的解釋,資料結構資料結構,你首先得有資料,然後這些資料是怎麼儲存的呢,你就畫一個表,第一行寫標號,第二行寫取值,然後就構成了一個順序表了。應該說所有人都會採用這種最基本的方法來存資料,比如成績表,你記筆記用到的序號。而陣列就是這種表的一種實現,只不過實現定義好了的規範而已。
並且我們學習一門語言的時候大機率最先用到的資料結構就是陣列了,比如c++/c:
其次如果我一開始不知道我要存10個數,而是不知道要存多少個,難道我要
這樣嗎?
顯然是不可能的,這就是陣列的缺點那就是很難動態調整。
於是乎便有了連結串列這一想法,首先連結串列在c裡面的實現要用到結構體:
然後我們會發現連結串列也有缺點,等等等等。
之後有棧、佇列、樹、圖、雜湊等等。
但是這些都是最基本的,其次實際當中不可能用到全部是資料結構內容,但是學習了可以在應用的時候找到最好的方法。
應用了才能深刻體會到資料結構和演算法的奇妙,所以可以找個oj刷題。
但是Oj也不會涉及到所有的資料結構,所以也要看書結合。
資料結構和數學很類似都是比較抽象的,而往往實際問題都是非常複雜的,所以要先掌握最基本最抽象最特殊的規律。
學習資料結構首先要掌握一門計算機語言,起碼要知道語法,能利用它完成一些基本程式,就像首先要掌握數學最基本的加減乘除,定理之類的規則。
其次要知道資料結構和演算法是分不開的,學習資料結構的同時也需要一定的演算法學習,一般來說演算法實現的過程需要用到資料結構的知識。
比如我們一開始學習順序表
順序表最基本的就是陣列了,我覺得這個不需要什麼太多的解釋,資料結構資料結構,你首先得有資料,然後這些資料是怎麼儲存的呢,你就畫一個表,第一行寫標號,第二行寫取值,然後就構成了一個順序表了。應該說所有人都會採用這種最基本的方法來存資料,比如成績表,你記筆記用到的序號。而陣列就是這種表的一種實現,只不過實現定義好了的規範而已。
並且我們學習一門語言的時候大機率最先用到的資料結構就是陣列了,比如c++/c:
其次如果我一開始不知道我要存10個數,而是不知道要存多少個,難道我要
這樣嗎?
顯然是不可能的,這就是陣列的缺點那就是很難動態調整。
於是乎便有了連結串列這一想法,首先連結串列在c裡面的實現要用到結構體:
然後我們會發現連結串列也有缺點,等等等等。
之後有棧、佇列、樹、圖、雜湊等等。
但是這些都是最基本的,其次實際當中不可能用到全部是資料結構內容,但是學習了可以在應用的時候找到最好的方法。
應用了才能深刻體會到資料結構和演算法的奇妙,所以可以找個oj刷題。
但是Oj也不會涉及到所有的資料結構,所以也要看書結合。