天天看點

資料結構

早期人們用計算機解決問題時,通常将實際問題抽象出一個具體的資料模型,然後以此來設計出解決此資料模型的算法,再編寫程式,成為一個完整的軟體。

資料結構是一門研究非數值計算的程式設計問題中的操作對象,以及他們之間的關系和操作等相關問題的學科。

程式設計=資料結構+算法

到底什麼是資料結構呢,以下是我結合資料的了解(若有錯誤希望能夠指出)。

資料結構有“資料”也有“結構”,那我們先談一下資料。

資料是什麼呢?先引出資料的定義:

資料:是描述客觀事物的符号,是計算機中可以操作的對象,是能被計算機識别,并輸入給計算機處理的符号的集合。

通俗來說就是整型、實型等數值類型,同樣包括字元、聲音、圖檔、視訊等非數值類型。

我們所說的資料,實際上是符号,這些符号需要具備兩個前提:

  1. 可以輸入到計算機中;
  2. 可以被計算機的程式處理;

整形實型的資料,我們直接可以通過數值來處理,而字元型資料,需要進行非數值的處理;聲音、圖檔視訊等則需轉換成字元資料處理。

了解了資料,我們再來說一下資料的組成,這裡要引出資料元素的定義。

資料元素:是組成資料的、具有一定意義的基本機關,在計算機中通常作為整體處理,也被成為記錄。

該如何了解呢?舉個例子,人的一個整體中的資料元素是什麼?就是人;有男人,有女人,有老人,有小孩,各種各樣的人,但是他們歸根結底都是人,就是人類中的資料元素。

如果把資料元素細分又是什麼呢?這就引出了資料項;

資料項:一個資料元素可以由若幹個資料項組成。

還是剛才的例子,一個人是人類中的資料元素,那麼這個人的鼻子眼睛嘴巴耳朵眉毛手腳就是他的資料項,同樣可以是這個人的身高體重習慣愛好等資料項,具體的資料項需要由你做的系統來決定。

知道了資料元素,那性質相同的資料元素又是什麼呢,這就是資料對象。

資料對象:是性質相同的資料元素的集合,是資料的子集。

剛才人的例子,人都有姓名、性别、身高、體重等相同的資料項,這就是性質相同;

通常處理的資料元素都具有相同的性質,而資料對象又是資料的子集,為了不混淆,我們把資料對象簡稱為資料。

資料就是這些,總結一下:

相同類型的資料項組成了資料元素,各種性質相同的資料元素共同組成了資料對象也就是資料。

說完了資料,接下來就是結構了;

結構,通俗的來說就是關系。由于資料元素存在不同,通過特定搭配和排列就可以将他們聯系起來,這就是結構。

知道了結構,說了這麼多,那麼資料結構到底是什麼呢?

資料結構:資料元素之間存在的一種或者多種特定關系的集合。

這個定義已經很清楚了,舉個例子就是将圖書館的不同的書轉換為一些字元資料存入電腦中,然後将它們進行組合聯系,對這些資料對象進行操作。

資料結構可以分為兩種,邏輯結構和實體結構(存儲結構);

邏輯結構

是資料對象中資料元素之間的互相關系;分為集合結構,線性結構,樹形結構,圖形結構;

集合結構:集合結構中資料元素除了同屬于同一個集合外,之間沒有任何關系。

集合結構中元素都是平等的,屬于同一個集合;

線性結構:線性結構中的元素是一對一的關系;

樹形結構:樹形結構中的資料之間存在一種一對多的層次關系。

圖形結構:圖形結構的資料元素是多對多的關系;

實體結構(存儲結構)

指的是資料的邏輯結構在計算機中的存儲形式。

實體結構反映的是資料元素之間的邏輯關系。

實體結構分為兩種:順序存儲結構和鍊式存儲結構。

順序存儲結構:将資料元素存放到位址連續的存儲單元中,資料間的邏輯關系和實體關系是一緻的。

最典型的例子就是數組,當用整型資料定義了一個存放10個資料的數組時,計算機将記憶體中開辟出來一段連續的空間去存儲輸入的整型資料,第一個資料放在第一個位置,第二個放在第二個位置。。。。。依次擺放。

鍊式存儲結構:将資料元素存放在任意的存儲單元中,存儲單元可以連續,也可以不連續。資料間的邏輯關系和實體關系是不一緻的。

這裡就需要用指針來存放資料元素的位址,以便于在混亂的存儲單元中快速準确的找到相應的資料。

鍊式存儲結構就顯得尤為靈活,不用去關心資料存放在哪裡,隻需要通過指針存放好資料的位址就可以了。

/這就是我對資料結構開始學習的一個總結,這是我學習的第一章,通過寫文章的方式來理清楚思路,使自己對資料結構的概念有更深的了解,其中借閱了很多資料,同時希望能與跟多的人互相交流,如果文章内容有問題的話歡迎讨論。希望大家共同進步!/

繼續閱讀