學數據結構用C還是C++?
01-30
C++ 有模板,是描述數據結構的利器:
- hash_set&
的內部結構可以描述為 vector& - &> 或者 vector&
&> - map&
&>,記錄一個單詞在文件中出現的位置,一句話就說清楚了。
用 C 語言就麻煩得多,要麼寫很多重複的代碼(例如 stack&
簡單和中級的數據結構,用C寫,很有好處。比如表,二叉樹,堆,並查集之類的。
再複雜一點的就建議用C艹,比如圖的非遞歸遍歷會用到隊列,但你這時關注點應該在圖上,而不應該是隊列或者其他細枝末節,這些細枝末節直接拿標準庫搞定就可以了。
再用Java或C井把學過的東西重寫一下,體驗一下純面向對象,體驗一下純引用世界。或者以泛型模板的方式把這些數據結構用C艹和C井寫成輪子。
這樣就差不多了。學數據結構用C語言,解決實際問題抽象數據結構的時候用C++,C++11寫的很帶感
學習數據結構的話,可以用偽代碼描述的,非要用C的話C/C++都用,大部分結構C完成就完全足夠了,細枝末節C++可以幫到你,比如你想讓函數可以改變實參值,使用c佳佳中的引用型參數會方便很多。但是說實話,沒必要這麼嚴謹,這是數據結構,結構啊,編程是次要的,相信我,你真正用到數據結構的時候可能和c系列沒個P關係。
樓主既然只是想學習而已,那麼就坑定沒有涉及到封裝泛型什麼的,偷懶點連內存管理都可以扔掉了,只管new,不用delete了。所以既然這樣那麼肯定是用C++比較好。例如說用C創建一個節點。
struct node{};
node* nod = malloc( sizeof(node) );
那麼用C++創建一個節點。
struct node{};
auto nod = new node;
哪種方法簡便和易讀想必不用我多說吧。
還有輸出結果的時候,用
print("%d",nod-&>data);
好還是直接用
好呢?cout&<&
學慣用 C,簡單,基礎。工作用C++, 開發快,錯了也不會扣分(扣不扣工資我就不知道了)。
先用裸C(不作任何封裝的C)實現演算法和單元測試,再用C++作OO或template封裝,推薦:C++代碼重構——從C global到C++ template
自己現在就在學數據結構,老師用的c++,我用的c。
才疏學淺,若有錯誤,請指正
我只想說,c++完全就是數據結構利器好么!?
(坷垃好處都有啥?誰能說對就給誰o(* ̄▽ ̄*)ブ)1.定義類,可以把數據結構本身操作和其他函數明顯分開2.還有就是定義模板!簡直不要太方便。雖說c也可以寫adt,每次程序頭上光定義都得十幾行→_→3.c++中可以直接對定義的類進行操作!當時我就_(:_」∠)_舉個例子,c的數據結構大多加頭,不加頭很蛋疼…c中如果棧不加頭,而是直接是指向棧定的話。天_(:_」∠)_,如果出棧你還需要傳入一個指向棧頂的指針,不然pop了等於沒做…(傳入的地址是複製過來的地址,不用二重指針沒法修改)而c++可以直接改哦4.還有c++里動態分配空間new就這麼簡單!c裡邊可是好多個…(雖然我都一律malloc:D)5.然而c++是方便了些,但是喪失了一點c自由
一切跟你扯「面向對象」的都是耍流氓,扯模板的還稍微正常那麼一點
用什麼C 用JAVA
吃飯是使用筷子還是使用刀叉?哪個順手用哪個,演算法思想才是重要的,不要捨本逐末。
偶覺得用PASCAL就不錯,C也可以數據結構不是編程,編程語言在數據結構這門課的作用是描述懂了,用什麼語言都沒問題不應該讓"選擇什麼編程語言"來困擾你學習數據結構你的老師用什麼語言,你就用什麼語言
你的教材用什麼語言,你就用什麼語言
因為重要的是你要理解掌握數據結構和演算法而不是用什麼語言來實現他用什麼語言來實現,是另一個問題,但不是數據結構應該解決的問題你直接用Cpp的C子集不就行了么
用不用STL或者模板還不是在你於自己怎麼選么
一直覺得殷人昆的C++版數據結構是一本很經典的書,雖然對初學者來說有一點難度
用C學數據結構,然後用的時候C++
用什麼語言都沒有關係,數據結構本身是抽象的,與具體實現關係不大.可以選擇自己熟悉的語言描述的數據結構書來做切入點
用什麼重要麼?重要的不是思想么?
學原理用C我個人覺得好一些...缺少了很多庫支持以後,啥都要自己寫,酸爽一次以後,原理就通了...但是如果想寫點東西能夠拿著用的話,畢竟C++有模版...毫不留情的說,用c。為什麼呢?c貼近生活啊,你要一步一步敲代碼啊,非理解透徹你敲不對,用不對啊!只有經歷過各種失敗與挫折,你才能真正理解啊。另外,對於一個排序演算法,建個堆啥的,你用c++幹嘛?封裝?多態?哦,不要自己騙自己了。模版類真的好用么?好個蛋,一個void解決一切有沒有!需要各種template?寫到手抽筋好不好!說c沒有c++好用,那是因為c功底差,我不信上來都會用stl。當然,又懶,又牛的可以考慮看看,畢竟封裝了很多現成的東西。另外,其實很多人打著c++的旗號,干著c的事情,不倫不類,讓人哭笑不得!當然也包括我自己。。樓主有這個問題,代表沒認清楚c與c++,建議去看一看各自的特性。。竊以為,c是最適合用來學習的語言,因為,它最符合正常人的思維習慣,並且可以讓你控制所有細節。但是,如果想要快速開發啥的,就不要考慮它了,畢竟你要處理太多東西。c++,嗯,除了封裝,多態以及那個stl,你用它幹啥!!
推薦閱讀:
※如何提升 C++ Trie 樹的存取效率?
※學習C++語言重點應該當在哪裡?
※C++中循環中的auto是利用了迭代器的機制嗎?
※codeblocks寫代碼有時候會自動補全,有時候不補全?