一、學習數據結構有什么用
數據結構是編程最重要的基本功。學了順序表和鏈表,你就知道,在查詢操作更多的程序中,你應該用順序表;而修改操作更多的程序中,你要使用鏈表;而單向鏈表不方便怎么辦,你這時就會想到雙向鏈表or循環鏈表。
學了棧之后,你就知道,很多涉及后入先出的問題,例如函數遞歸就是個棧模型、Android的屏幕跳轉就用到棧,很多類似的東西,你就會名列前茅時間想到:我會用這東西來去寫算法實現這個功能。
學了隊列之后,你就知道,對于先入先出要排隊的問題,你就要用到隊列,例如多個網絡下載任務,我該怎么去調度它們去獲得網絡資源呢?再例如操作系統的進程(or線程)調度,我該怎么去分配資源(像CPU)給多個任務呢?肯定不能全部一起擁有的,資源只有一個,那就要排隊!那么怎么排隊呢?用普通的隊列?但是對于那些優先級高的線程怎么辦?那也太共產主義了吧,這時,你就會想到了優先隊列,優先隊列怎么實現?用堆,然后你就有疑問了,堆是啥玩意?自己查吧,敲累了。
總之好好學數據結構就對了。我覺得數據結構就相當于:我塞牙了,那么就要用到牙簽這“數據結構”,當然你用指甲也行,只不過“性能”沒那么好;我要擰螺母,肯定用扳手這個“數據結構”,當然你用鉗子也行,只不過也沒那么好用。學習數據結構,就是為了了解以后在IT行業里搬磚需要用到什么工具,這些工具有什么利弊,應用于什么場景。以后用的過程中,你會發現這些基礎的“工具”也存在著一些缺陷,你不滿足于此工具,此時,你就開始自己在這些數據結構的基礎上加以改造,這就叫做自定義數據結構。而且,你以后還會造出很多其他應用于實際場景的數據結構。你用這些數據結構去造輪子,不知不覺,你成了又一個輪子哥。