今天開始學習C語言的資料結構,每天會在這個平臺記錄自己的學習,相當于學習筆記吧!一是可以作為督促自己每天堅持學習,二是可以見證自己成長的歷程,當然,最大的愿望就是希望這些筆記對你們也有用,可以給你們一些幫助!!!
一、為什么要學資料結構?
程式設計=資料結構+演算法
因為資料結構可以讓編程能力有質的飛躍,不僅僅局限于撰寫一些簡單的問題,不用絞盡腦汁呼叫現成的東西,然而還不懂到底是什么意思!資料結構很難,我相信我可以堅持學下去嘿嘿!
二、關于資料結構的一些基本概念
資料:所有能輸入到計算機中并被計算機程式處理的符號的總稱,
資料元素:是資料的基本單位,在計算機程式中通常作為一個整體進行考慮和處理,
資料物件:性質相同的資料元素的集合,是資料的一個子集,
資料結構:相互之間存在一種或多種特定關系的資料元素的集合,
三、資料結構的形式定義:
資料結構是一個二元組:Data_Structure = (D,S)
D表示資料元素(有限集),S表示資料元素之間的關系,
四、資料結構包含邏輯結構和物理結構
邏輯結構:
邏輯結構主要有4中:分別是集合結構、線性結構、樹形結構和圖狀結構(也稱網狀結構),
集合結構:各元素之間除了同屬一個集合外沒有其他的關系,
線性結構:結構的資料元素之間存在一對一的關系,
樹形結構:結構的資料元素之間存在一對多的關系,(如家譜或族譜通常是樹形結構)
網狀結構:結構的資料元素之間存在多對多的關系,(如各個城市之間的交通路線關系)
物理結構:
物理結構(又稱存盤結構)主要有2中,分別是順序存盤結構和鏈式存盤結構,
順序存盤結構:如a1到an按照一定的順序存盤,a1到an一次排放,這種存盤方式的特點就是借助元素在存盤器中的相對位置來表示資料元素之間的邏輯關系,假設地址相鄰的兩個元素相差兩個位元組,若a1的存盤位置已知,則an的存盤位置為:
an=a1+2(n-1)

鏈式存盤結構:
它的特點就是借助指示元素存盤地址的指標表示資料元素之間的邏輯關系,
這種存盤方式每一個元素有資料域和指標域,指標域的作用是指向下一個資料的資料域,就像我們在醫院排號時,我們所拿的號就相當于指標域,當醫生叫到你手上的號的前一個號時,你就會高度緊張,這種方式你不用一直站在那里排隊,可以自由的活動,只要注意醫生喊號即可,從這里可以看出,鏈式存盤結構比順序存盤結構更靈活,
五、演算法
演算法的5個重要特性:
(1)有窮性,一個演算法必須在執行有限步后結束,且每一步都能在又窮的時間內完成,
(2)正確性,每一條演算法不能產生二義性,對于相同的輸入必須有相同的輸出,
(3)可行性,演算法中描述的操作都能通過已經實作的基本運算執行有限次來實作,
(4)輸入和輸出,一個演算法可以有0個或多個輸入,一個演算法必須有一個或多個輸出,
演算法設計的要求:
(1)正確性,正確性包括4個方面,演算法程式沒有語法錯誤;演算法程式對于合法輸入都能產生滿足要求的輸出;演算法程式對非法輸入能產生滿足規格的說明,來提醒用戶他輸入錯了;演算法程式對于故意刁難的測驗輸入都有滿足要求的輸出結果,
(2)可讀性,演算法方面人們閱讀和交流,
(3)健壯性,對非法輸入演算法也能做出反應或進行處理,不會產生莫名其妙的輸出結果,
(4)高效率和低存盤需求,演算法的執行時間盡量短,存盤需求盡量小,執行時間短的演算法效率高,
六、演算法效率的度量
有事前分析估演算法(在計算機程式撰寫前,依照統計方法對演算法進行估算)和事后統計方法(在程式撰寫完成后,對演算法的效率進行估算)
顯然,用事后統計方法更好!
關于演算法效率的評價有時間復雜度和空間復雜度兩個衡量標準,由于現在計算機的性能都比較好,所以一般考慮時間復雜度,關于這時間復雜度和空間復雜度的計算方法,比較復雜,明天針對這兩個問題專門出一片博客,今天到此為止吧!晚安!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/163542.html
標籤:其他
