用不同程式語言實現資料結構是否真的沒有較大的差異?

時間 2021-05-11 13:13:13

1樓:

資料結構和設計模式都是用來解決問題的,如果有更好(更快或更方便)的方式,我們幹嘛要緣木求魚?

你說python?更快是沒著了,但論方便C++能比?

你說結構體?巢狀陣列了解一下。任何結構體都能給你相容。

你說沒有指標不好實現鍊錶?先不說在py上實現鍊錶有什麼意義,實際上,py裡面存例項的變數不都是指標嗎。

資料結構只是一種組織資料的思想,如果有更方便的工具和方法,為什麼不用呢。

2樓:豬鼻蛇

當然有比這裡很多答案說得都要大的差異

比如說,你用純函式式的資料結構,有些時候就是很難保證毫無限制下的複雜度(比如很多動作都要檢視資料內部組織狀態的時候)

所以這句話還是有語境的,譬如說,如果你只用C和Python,那基本上確實"用什麼語言實現資料結構並不重要!重要的是理解思想!"

比如說鍊錶和指標,指標無非是乙個用值指示其他變數的變數,只要你理解乙個變數總是由指示和值兩部分構成,這有什麼難的?如果你說變長的資料處理起來有問題,那麼你只要定義好序列化-反序列化方法,然後定義個分隔符,不就可以無論什麼結構的資料都存成一串了嗎?

當然正常人在這種情況下會根據演算法思想選擇其他等效地實現,而不是自己重寫一套實現

3樓:韓樸宇

我覺得程式語言分兩種情況,一種是能嚴格的控制記憶體布局的,一種不能,C、C++、unsafe Rust 屬於前者。後者的資料結構在記憶體中有額外的資料用於執行時。

但是後者不是說不能實現資料結構,只是效果不一定好。比如不必要的記憶體占用、不必要的堆記憶體分配。

實際上指標如果不需要進行指標運算,則功能上等價於大多數語言都有的引用,因此鍊錶之類的應該都能實現。

如果要進行指標運算,那就只能尋找替代品了,比如用資料下標模擬。

4樓:

當你寫程式寫得越多,你就會發現越是重要的東西,就會越抽象。乙個基礎設施(或者就說是某種資料結構),其標準定義絕對不會定義實現方式。舉個例子,我要實現乙個叫list的容器,它可能會這樣描述:

事實上,只要你能做出符合這樣要求的容器,那麼它就是標準的容器。

大學裡面的很多教材把實現都具體化了,好像鍊錶就只能用指標實現一樣,但是鍊錶的核心是對結點的操作,結點在C中的體現是指標,當然也可以用其它方式來實現。

為什麼不能用其它語言來實現某種結構呢?原因很簡單,1. 學得不到家 2. 這門語言壓根就不需要這種結構。

c語言實現能否儲存資料?

我來補充一點吧。很多回答說到了檔案讀寫,這是對的,但是乙個應用程式儲存資料到硬碟也有主流的三種方式 1,使用自己設計的檔案格式,就比如說樓上有些回答直接把乙個變數的值寫進檔案,下次開啟程式直接讀檔案來得知上次執行的結果。2,使用 XML,JSON,INI 等檔案格式。其實這些檔案格式說到底還是純文字...

求教C語言資料結構題

0x76 比如int removeDuplicates int array int array size else current array i return array size 函式返回新的陣列長度,可見複雜度並不是 如果陣列元素資料範圍較小,可以使用計數陣列。比如,假設 0 array i ...

關於演算法和資料結構和程式語言和程式的關係是什麼?

計算機底層都是 01010101010的二進位制存在記憶體中,為了讓人類能直觀運算元據,產生了資料結構,抽象出一種結構。C語言知識實現演算法的一種工具,用其他的工具也能實現。演算法大概就是,為了達成某種目的,一種思路。程式就是演算法的具體實現。使用特定的資料結構,並且用某種工具比如C語言編寫實現 L...