3 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)結(jié)構(gòu)(Data Structure)是信息的一種組織方式,它用來反映一個(gè)數(shù)據(jù)的內(nèi)部構(gòu)成,即一個(gè)數(shù)據(jù)由哪些成分?jǐn)?shù)據(jù)構(gòu)成,以什么方式構(gòu)成,呈什么結(jié)構(gòu)。其目的是為了提高算法的效率,它通常與一組算法的集合相對應(yīng),通過這組算法集合可以以數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)進(jìn)行某種操作。數(shù)據(jù)結(jié)構(gòu)有邏輯上的數(shù)據(jù)結(jié)構(gòu)和物理上的數(shù)據(jù)結(jié)構(gòu)之分。邏輯上的數(shù)據(jù)結(jié)構(gòu)反映成分?jǐn)?shù)據(jù)之間的邏輯關(guān)系,而物理上的數(shù)據(jù)結(jié)構(gòu)反映數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲安排。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
1.1 數(shù)據(jù)結(jié)構(gòu)的概念數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的專業(yè)基礎(chǔ)課,是十分重要的核心課程。所有的計(jì)算機(jī)系統(tǒng)軟件和應(yīng)用軟件都要用到各種類型的數(shù)據(jù)結(jié)構(gòu)。因此,要想更好地運(yùn)用計(jì)算機(jī)來解決實(shí)際問題,僅掌握幾種計(jì)算機(jī)程序設(shè)計(jì)語言是難以應(yīng)付眾多復(fù)雜的課題的。要想有效地使用計(jì)算機(jī)、充分發(fā)揮計(jì)算機(jī)的性能,還必須學(xué)習(xí)和掌握好數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識。打好“數(shù)據(jù)結(jié)構(gòu)”這門課程的扎實(shí)基礎(chǔ),對于學(xué)習(xí)計(jì)算機(jī)專業(yè)的其他課程,如操作系統(tǒng)、編譯原理、數(shù)據(jù)庫管理系統(tǒng)、軟件工程、人工智能等都是十分有益的。1.1.1 為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)發(fā)展的初期,人們使用計(jì)算機(jī)的目的主要是處理數(shù)值計(jì)算問題。當(dāng)我們使用計(jì)算機(jī)來解決一個(gè)具體問題時(shí),一般需要經(jīng)過下列幾個(gè)步驟:首先要從該具體問題抽象出一個(gè)適當(dāng)?shù)臄?shù)學(xué)模型,然后設(shè)計(jì)或選擇一個(gè)解此數(shù)學(xué)模型的算法,最后編出程序進(jìn)行調(diào)試、測試,直至得到最終的解答。例如,求解梁架結(jié)構(gòu)中應(yīng)力的數(shù)學(xué)模型的線性方程組,該方程組可以使用迭代算法來求解。由于當(dāng)時(shí)所涉及的運(yùn)算對象是簡單的整型、實(shí)型或布爾類型數(shù)據(jù),所以程序設(shè)計(jì)者的主要精力是集中于程序設(shè)計(jì)的技巧上,而無須重視數(shù)據(jù)結(jié)構(gòu)。隨著計(jì)算機(jī)應(yīng)用領(lǐng)域的擴(kuò)大和軟、硬件的發(fā)展,非數(shù)值計(jì)算問題越來越顯得重要。據(jù)統(tǒng)計(jì),當(dāng)今處理非數(shù)值計(jì)算性問題占用了90%以上的機(jī)器時(shí)間。這類問題涉及到的數(shù)據(jù)結(jié)構(gòu)更為復(fù)雜,數(shù)據(jù)元素之間的相互關(guān)系一般無法用數(shù)學(xué)方程式加以描述。因此,解決這類問題的關(guān)鍵不再是數(shù)學(xué)分析和計(jì)算方法,而是要設(shè)計(jì)出合適的數(shù)據(jù)結(jié)構(gòu),才能有效地解決問題。下面所列舉的就是屬于這一類的具體問題。[例1] 學(xué)生信息檢索系統(tǒng)。當(dāng)我們需要查找某個(gè)學(xué)生的有關(guān)情況的時(shí)候;或者想查詢某個(gè)專業(yè)或年級的學(xué)生的有關(guān)情況的時(shí)候,只要我們建立了相關(guān)的數(shù)據(jù)結(jié)構(gòu),按照某種算法編寫了相關(guān)程序,就可以實(shí)現(xiàn)計(jì)算機(jī)自動(dòng)檢索。由此,可以在學(xué)生信息檢索系統(tǒng)中建立一張按學(xué)號順序排列的學(xué)生信息表和分別按姓名、專業(yè)、年級順序排列的索引表,如圖1.1所示。由這四張表構(gòu)成的文件便是學(xué)生信息檢索的數(shù)學(xué)模型,計(jì)算機(jī)的主要操作便是按照某個(gè)特定要求(如給定姓名)對學(xué)生信息文件進(jìn)行查詢。諸如此類的還有電話自動(dòng)查號系統(tǒng)、考試查分系統(tǒng)、倉庫庫存管理系統(tǒng)等。在這類文檔管理的數(shù)學(xué)模型中,計(jì)算機(jī)處理的對象之間通常存在著的是一種簡單的線性關(guān)系,這類數(shù)學(xué)模型可稱為線性的數(shù)據(jù)結(jié)構(gòu)。[例2] 八皇后問題。在八皇后問題中,處理過程不是根據(jù)某種確定的計(jì)算法則,而是利用試探和回溯的探索技術(shù)求解。為了求得合理布局,在計(jì)算機(jī)中要存儲布局的當(dāng)前狀態(tài)。從最初的布局狀態(tài)開始,一步步地進(jìn)行試探,每試探一步形成一個(gè)新的狀態(tài),整個(gè)試探過程形成了一棵隱含的狀態(tài)樹。如圖1.2所示(為了描述方便,將八皇后問題簡化為四皇后問題)?;厮莘ㄇ蠼膺^程實(shí)質(zhì)上就是一個(gè)遍歷狀態(tài)樹的過程。在這個(gè)問題中所出現(xiàn)的樹也是一種數(shù)據(jù)結(jié)構(gòu),它可以應(yīng)用在許多非數(shù)值計(jì)算的問題中。[例3] 教學(xué)計(jì)劃編排問題。一個(gè)教學(xué)計(jì)劃包含許多課程,在教學(xué)計(jì)劃包含的許多課程之間,有些必須按規(guī)定的先后次序進(jìn)行,有些則沒有次序要求。即有些課程之間有先修和后續(xù)的關(guān)系,有些課程可以任意安排次序。這種各個(gè)課程之間的次序關(guān)系可用一個(gè)稱作圖的數(shù)據(jù)結(jié)構(gòu)來表示,如圖1.3所示。有向圖中的每個(gè)頂點(diǎn)表示一門課程,如果從頂點(diǎn)vi到vj之間存在有向邊<vi,vj>,則表示課程i必須先于課程j進(jìn)行。由以上三個(gè)例子可見,描述這類非數(shù)值計(jì)算問題的數(shù)學(xué)模型不再是數(shù)學(xué)方程,而是諸如表、樹、圖之類的數(shù)據(jù)結(jié)構(gòu)。因此,可以說數(shù)據(jù)結(jié)構(gòu)課程主要是研究非數(shù)值計(jì)算的程序設(shè)計(jì)問題中所出現(xiàn)的計(jì)算機(jī)操作對象以及它們之間的關(guān)系和操作的學(xué)科。
- 3 回答
- 0 關(guān)注
- 1093 瀏覽
添加回答
舉報(bào)