資料結構你學懂了嗎?

2021-07-28 14:23:22 字數 1870 閱讀 2638

開篇就習慣開門見山。

你可能會鍊錶、順序表、棧、佇列、串、壓縮矩陣、二叉樹、森林、有向圖、無向圖什麼的。但是除此之外呢?你還知道什麼?

好吧,就算你說的這些,你知道這些概念,那你寫個二叉樹我看看?

這很可能就是面試官的一句問話。在大學裡面,我們肯定都學過資料結構這門課程,還做了相關的實驗報告,程式設計實現的這一過程。但是,這並不代表資料結構你學了。是的,就是你學了,而不是你學懂了。就真正的定義而言,資料結構包括兩類:基礎資料結構高階資料結構

我們上課聽的資料結構課,如果站在老師的角度上面來考慮:一學期只有40節理論課,8節實驗課。資料結構包括線性表、樹、圖、排序這麼多內容,並且大部分學生在這門課學習之前對此基本是一無所知。如何能最大化讓他們都聽懂,這是老師該考慮的。但是,老師們忽略了乙個至今也無法解決的問題,如何讓學生們認識到資料結構的重要性,並培養他們自己深究下去的興趣。個人認為,這是現在大學教育課堂中,最重要的問題。

俗話說,興趣是最好的老師。相比於演算法而言,資料結構的「門檻」會低很多。而且,資料結構學習的過程實踐所佔的比例遠大於理解所佔的比例。因為資料結構普遍的知識不是太難,除了個別的(網路流、紅黑樹),這些知識基本上一學期的學習可以理解大部分。但是理解歸理解,學歸學。希望大家永遠不要弄混這兩個概念。

永遠不要把「我理解了」認為是「我學會了。

資料結構是一門實踐性很強的學問。就排序而言,書中所講的那些排序,可能思想你都會懂。當然,**你也會看得懂。畢竟你說你學了。不錯,但是你知道為什麼要這麼寫嗎?還有,如果我改動一點點,同樣能實現排序功能,但是會出現問題,你能分析出問題出在**嗎,並且能說出為什麼嗎?而且,如果我要你說穩定性到底有什麼作用嗎?你可能理解這個概念,但是當你碰到真正問題之前,你是不會明白穩定性的作用。

這就是乙個說明。

但是可惜的是,在大學中,資料結構除了用在資料結構課堂上之外,平時幾乎用不到。就資訊類專業的課程來說,可以這樣調侃,以後沒多大用的高等數學在其他課程中出現的頻率是資料結構在其他課程中出現的頻率的幾十倍。事實上,資料結構是程式中的乙個重要「支撐點」。在很多的公司筆試中,會把平常生活中的問題要你用資料結構知識來處理。比如說一串資料的查詢,修改,求和,排序,比較等等。這些都是資料結構的知識。

不過我知道的是,在現如今,不僅在大學中除了資料結構專業課有考試之外無其他任何檢測手段,在面試筆試,工作中,大家都以為程式是由類組成,應該用框架,而這些框架直接在開源**上面copy下來就行了。因此,明白資料結構但是不會寫成了很多程式設計師的「弊端」。

甚至會出現這麼一種情況:如果你在某個地方別人(也許是老師學長,也許是上司同事)教你用這個結構處理這組資料的什麼什麼功能。你不會就此**其他第二條解決辦法。並且在以後再碰到類似問題都用這種結構處理。如果哪一天你很不幸還是碰到這組資料,還是要實現這個功能,但是你發現資料不僅多,而且很大,相當於過關遊戲的加強版來了。你對此束手無策。你此時很想翻書或者上網查詢一些解決辦法,但你發現此時你的知識似乎已經完全退還給老師了。

希望大家搞清楚乙個事實:課堂上學的資料結構只是基礎資料結構,是最原始的儲存處理資料的辦法。如果要有對以後專案資料問題處理的能力,你需要深究,繼續學習高階資料結構,甚至還需要學習一點點演算法。

並且請大家還要明白:課堂上老師講的資料結構的內容通俗易懂,你能得心應手,很大的原因是你不需要親自用**實現,老師都會給現成的給你看。事實上,看懂一段**就跟聽一首歌一樣簡單,如果此前你已經明白思想的話。但是寫好這段**就像要唱好這首歌一樣困難。如果你只會聽歌的話。

因此,資料結構的學習不在於聽,而在於寫,在於實踐。

html你真的學懂了嘛?

相信web開發者都學過html,但是很多都是淺嘗輒止就去學習其他語言了,不僅在整體內容上不全面,標籤的具體使用情境也不細化。接下來就以一定的邏輯詳細的介紹你沒有深入了解的html。我們今天主要是討論網頁描述的入門語言 html html是一套標記語言,標記語言必然有一套標記標籤,標記標籤被稱為htm...

資料結構你真的懂了嗎? 陣列和廣義表篇

串 串 string 是零個或多個字元組成的有限序列。長度為零的串稱為空串 empty string 它不包含任何字元。通常將僅由乙個或多個空格組成的串稱為空白串 blank string 注意 空串和空白串的不同,例如 和 分別表示長度為1的空白串和長度為0的空串。串的表示和實現 1.定長順序儲存...

Spring Context 你真的懂了嗎

今天介紹一下大家常見的乙個單詞 context 應該怎麼去理解,正確的理解它有助於我們學習 spring 以及計算機系統中的其他知識。我們經常在程式設計中見到 context 這個單詞,當然每個人有每個人的理解,它被理解為 上下文 容器等等。我想說的是,context 理解為上下文最為合適。為什麼呢...