數據結構是教你如何在現有程序的基礎上把它變得更優(運算更快,占用資源更少),它改變的是程序的存儲運算結構而不是程序語言本身。
如果把程序看成一輛汽車,那麼程序語言就構成了這輛車的車身和輪胎。而算法則是這輛車的核心--發動機。這輛車跑得是快是慢,關鍵就在於發動機的好壞,而數據結構就是用來改造發動機的。
數據結構是編程的思維,編程的靈魂,算法的精髓所在,沒有了數據結構,程序就好像一個空核,最低效率的。學習數據結構的目的就是提高自己的思想,"想成為高手,數據結構一定要強"。
如果說學習語文的最終目的是寫小說的話,那麼能不能在識字、組詞、造句後就直接寫小說了,肯定是不行的,
中間還有一個必經的階段:就是寫作文。寫作文的直接目的有兩個:
1.掌握寫作套路、技巧(理論水平),保證以後寫小說的質量
2.提高寫作水平(動手能力),為以後寫小說打好基礎
學習一門計算機語言就好比識字階段,以後開發項目就好比寫小說,中間的離不開數據結構的學習,就好比寫作文。
1.高級電腦程式設計的理論指導
我塞牙了,那麼就要用到牙籤這"數據結構",當然你用指甲也行,只不過"性能"沒那麼好;
我要擰螺母,肯定用扳手這個"數據結構",當然你用鉗子也行,只不過也沒那麼好用。
學習數據結構,就是為了了解以後在IT行業里搬磚需要用到什麼工具,這些工具有什麼利弊,應用於什麼場景。
你會發現這些基礎的"工具"也存在著一些缺陷,你不滿足於此工具,此時,你就開始自己在這些數據結構的基礎上加以改造,
這就叫做自定義數據結構
掌握了開車的本領,桑塔納、寶馬、奔馳、老年代步車都會開。
數據結構可以採用不同的語言來描述和實現,此處自然是Java語言
2.提升編程能力
個人認為數據結構是編程最重要的基本功沒有之一
學習了Java、python、android、C、C++,你就成為編程高手了嗎。
不見得,每門語言都是入門而已,水平並沒有得到多少鍛鍊
學習一門數據結構,掌握了各種簡單、複雜數據類型的算法,編程能力就會有大的提升,甚至質的飛躍,內力深厚了。
3.面試中經常問到
為什麼面試官喜歡問數據結構
能夠看出一個同學是否基礎紮實,能夠看出一個人的發展後勁
因為數據結構本身也有難度
問題2:有哪些數據結構
線性表、棧、隊列、(字符)串、數組、廣義表、樹、二叉樹、圖
重點是線性表、二叉樹
對於每種數據結構會講解其添加、更新、刪除、查詢、排序等操作的實現
數據結構與算法不可分
對於查詢和排序一般單獨拿出來講解
我們的數據結構要講解哪些內容
1.數據結構與算法入門
2.各種數據結構:線性表、棧、隊列、(遞歸) 樹、二叉樹、圖
3.查找和排序
問題3:學習數據結構的四種境界
境界1:聽懂理論、聽懂算法思路 (理論家、眼高手低,總比不知道強多了)
境界2:完成主要數據結構基本算法的實現(理論+實踐,數據結構入門了)
境界3:完成更多數據結構更多算法的實現(進步提高數據結構功底)
境界4:融會貫通、舉一反三,在後續開發中綜合應用數據結構知識(數據結構就是哲學思想,只要和實踐結合才能學好)
學習數據結構不是一日之功,對於初學者要達到境界2,後續學習和工作中不斷研究學習