謹以此篇文章獻給我的網友海天一線還有就是為今天的組合數學考試祈禱:
海天一線是一個從asp開發轉向C++的朋友,并不斷奮斗,希望實現個人價值--進入一所全國最牛的研究生院!有志氣!!
任何應用程序其實就是對于數據的操作,完成商業邏輯。操作的方法無異于添加、修改、更新、刪除、查找、訪問等。而操作的過程中需要對數據進行存儲,抑或為了加快速度,可能對數據進行二次存儲(緩存)。對數據進行存儲就設計到數據結構的概念,可以說就是設計一個存儲數據的容器,容納數據且支持對數據的操作。針對不同的需求,數據結構的設計也不同,比如裝石頭,我們可以用籃子,而裝水就不可以。任何一本數據結構的書大概講的差不多,無論是何種語言,只要支持數據結構的設計都可以實現書本中講到的結構:數組、列表、棧、隊列、樹、圖、哈西表等。每一種結構都是對顯示世界中模型的一種抽象,比如數組可以表示向量、或者集合模型,列表和數組類似,只不過各有優缺點,它刪除、插入速度快,而不支持隨即訪問,樹一般是搜索用。開始聽海天一線說不明白數據結構怎么用,我覺得很奇怪,細細思考才發現問題。在Web開發中,數據一般都在數據庫中,所以對數據的操作都是在數據庫里面實現了,而應用開發中很少需要自己關心,所以轉向桌面應用開發(具體到C++)就不明白數據結構了,其實就相當于數據庫里面的操作。
當然,數據結構各種語言基本都實現了并各自有擴展,我們學習數據結構,學習的抽象問題的思想,而不是會使用數據結構,或者會設計一個具體的容器。STL(SGI公司開發)里面有vector、list、deque、set、map等,且據說這個可以移植,MFC有CArray、CMap、CList等,在Java里面也有Array、HashTable至少(因為我了解很少),Boost里面也有全部實現。所以真正開發中,我們可以根據語言和實際選擇已有的實現,除非已有的容器無法滿足需求,我們可以對已有容器封裝來設計或者完全自己實現。一般新建一個基于控制臺的項目設計數據結構,并加入數據檢驗正確性,當正確后在加入到項目中使用。
建議看一下別人設計的數據結構源碼,最好是公認的或者流行的,有模板知識的可以看下STL的實現,對于模板有很強的認識且C++語法掌握很好的建議看看Boost,說句實話,我自己不行,只看了2個結構,一個Any,一個Array,別的沒有繼續看下去,太難!!
具體到學習數據結構里面的小問題,建議看書,本文只是本人對數據結構的一個淺薄認識,如果學習中遇到問題,可以提出來,盡本人最大努力提供幫助。
希望高手提出建設性意見!!但是拒絕人身攻擊!!!
posted on 2005-12-28 22:30
萬連文 閱讀(455)
評論(1) 編輯 收藏 引用 所屬分類:
亂七八糟