在我的linux刀耕開荒階段,就想開始重拾c,利用c實現常用的基本資料結構和演算法,而資料結構和演算法的掌握的熟練程度正是程式的初學者與職業程式設計師的分水嶺。
那麼怎麼開啟這一段歷程呢?
按照軟體工程的思想,先從需求分析開始,用準確的共同的語言去表達需求,作出規格,到後面的設計,實現,維護。
基本資料結構和演算法需求比較明朗,但提高溝通能力要用我們的語言表達出來,然後進行建模,畫圖分析,設計,最後到實現,優化維護。
對於畫圖工具,我選擇graphviz。剛開始使用linux下的photoshop--gimp,對於不熟悉操作的化,簡直是個災難,還來使用類似與windows系統的kolourpaint,效率太低了,於是找到這款graphviz。
graphviz是大名鼎鼎的貝爾實驗室的幾位牛人開發的乙個畫圖工具,它提供了「所想即所得」的理念,通過dot語言來編寫指令碼並繪製圖形,簡單易懂。
下面的教程已經寫的很好,不再贅餘:
程式設計師繪圖利器
繪圖工具graphviz學習使用
演算法 基本資料結構
1 後進先出 2 棧有乙個屬性為s.top執行最新插入的元素 3 彈出稱為pop,插入稱為push 4 上溢和下溢 如果試圖對乙個空棧執行彈出操作,則稱為下溢 如果s.top超過了n,則稱為上溢,在下面偽 中不考慮上溢問題 1 先進先出 2 佇列有對頭head和對尾tail 3 插入稱為入隊 enq...
php 基本資料結構 和 演算法
以下的格式不好看,或者到空間的 裡面看吧,那裡的格式規範些。希望對有需要的同學有點幫助吧 基本資料結構 二分查詢 有序陣列裡查詢某個元素 low為待查詢的陣列中的最小值,high為陣列中的最大值,k為要查詢的關鍵字 function bin sch array,low,high,k elseif k...
面試基本資料結構和演算法
2.二叉樹 3.鍊錶反轉 def quick sort li,start,end 分治 一分為二 start end 證明要處理的資料只有乙個 start end 證明右邊沒有資料 if start end return 定義兩個游標,分別指向0和末尾位置 left start right end ...