想學資料結構和演算法要不要學c語言

時間 2021-05-07 03:11:01

1樓:皮皮關

在我看來,題主正好提了乙個「套套問題」——先養雞還是先孵雞蛋?除了起點不同,好像差不多吧。

首先,學C語言就是在學語法、演算法和資料結構

現在由於學科分的比較細,「演算法」和「資料結構」的概念變得太狹窄了。

實際上,這些都是演算法:交換兩個變數,輸入3個數字求最大的,求20和130的最大公約數,計算2023年是不是閏年。這些真的都是演算法,而且很多C語言的書上這些都是練習題。

還有,這些都是資料結構:陣列,字串,鍊錶。雖然很基礎很常用,但常用的才更重要不是嗎?

學C語言除了語法就是演算法和資料結構,沒有程式能脫離它們。

其次,演算法和資料結構都是語言的實踐

所有的演算法問題、資料結構問題,都不過是某種語言的例項而已。

甚至搞演算法和資料結構,用到的語言特性還特別少。C語言只要學會變數、函式、陣列和指標,就能刷絕大部分計算機競賽的題目了。

建議:能看出題主比較迷茫,原因可能是C語言入門比較無聊。建議有興趣的書都可以看看,學演算法和資料結構的時候,你才會知道為什麼要學C語言,也會主動去翻C語言的相關知識點。

做一做遊戲、用js做網頁之類的,會對學習程式設計有很大助推作用。

總之,啃書肯定是沒法學會程式設計的,活學活用才能真的學會,加油。

2樓:樓蘭天外天

有一點程式設計基礎上手快一點,不然你就只能萬花叢中過,片葉不沾身了,很多東西都和線性代數與程式設計原理相關,紅黑樹和多叉樹,哈夫曼編碼幾大搜尋,最優查詢毫不誇張的說,只要你的線性代數和概率論學的不錯掌握這些知識不會需要太多時間

3樓:Anxjing.AI

學學學,一定要學。

如果你正在開始,正準備選擇一門要學習的語言,一定一定要從C需要開始,它對你資料結構的理解真的真的真的很有幫助。

接受反駁,但保留個人觀點!

4樓:楊雅之

個人覺得沒有必要。

雖然現在大部分演算法書籍的實現都是c,但是github上基本上可以找到各種語言版本的演算法實現。

正如題主說的,語言只是演算法思想的載體,不必要糾結這個,當然,學c語言也沒有壞處,如果時間有空閒的話~

5樓:zr scat

大學裡教材讓你學的你就學,準沒錯。

如果有問題這課程早就撤了,人均985知乎肯定有人建議語言不重要,無所謂,別聽這些人的,這些人水平不行,只會嘴嗨

6樓:dc lin

我覺得可以不用學C,現在C和C++差異性比較大了,直接用C++也是可以的。

當然,用C來學資料結構的好處是對記憶體結構的把握比較好,而C++則是封裝比較好,畢竟從抽象角度來說,C++的類和泛型比較適合。

舉個例子,比如你學習了佇列,想寫乙個佇列的處理庫,在C裡面,你要麼要用很頭疼的巨集(macro),要麼就要針對每一種常見的型別單獨給乙個版本,而在C++裡的泛型能夠很好處理這個問題,只需要提供乙個版本就好。

在目前C++20快要發布和實現的時候,concept、range等的引入能更好的實現這種抽象。

7樓:涇渭漳淮

應該這麼講:

學C語言才需要學資料結構(如果你用c寫東西,你需要自己寫一些資料結構相關的東西)。

學其它語言不太需要學資料結構(你不需要懂原理,不需要自己寫,只要會用就行)。

8樓:AmberGarden

學。至少學個能將自己的思路描述出來的語言。資料結構是你腦中的想法:

如何抽象,如何操作這個抽象等等。而用語言編寫出來就等同於用說話的方式將這些表述出來,而執行結果就等同於別人對你的表述的反饋

所以說,只要你有志於從事這個行業,那麼不管是你能流利地描述一件事情,還是通過重複地敘述才能把一件事情說明白,語言,都是繞不過的

有必要學好資料結構和演算法嗎?

一定要學,學得多好因人而異。雖然現在有好多複雜的演算法有各種各樣的庫為你提供解決方案。你可以不需要會寫這些複雜的演算法。但是,如果你不知道這些演算法的基本原理,時空複雜度,你又如何知道該選哪個演算法呢?呼叫了這些函式後,你又如何去估計整個方法的時空複雜度呢? 有一定必要。資料結構和演算法實際上也是技...

前端開發是否有必要知道資料結構和演算法?

說複雜點,資料結構是用來重構系統的,前端沒有複雜到這種程度,而且實際開發中有幾個人合作,這會給交流帶來困難 演算法就寬泛一點,其實就是流程,也就不限於書上那幾種。演算法是跟開銷和效率掛鉤的,實際工作中如果有必要考慮這些,自然會有改進 一切都看實際情況,如果連整個開發流程都不清楚的,談這些還太過遙遠 ...

python面試時常考的資料結構和演算法有哪些

1 給乙個陣列,有100個數,數字,是0到50的 找出,出現次數,前3的數字,和他們出現次數 2 給乙個陣列,有100個數,數字,是 10到10的 找出,從乙個索引下標,到另外乙個索引下標之間,元素合的最大值,並且說出索引位置 3 遞迴方法寫斐波那契數列,要求,速度,越快越好,所求數量長度,從100...