二級c++資料結構

來源:互聯網
上載者:User

 

         在看的二級C++的一本書中關於資料結構的內容列為了一章,介紹了比較新的概念。其中包括:線性表、棧、隊列、樹、二叉樹。

         資料結構:是指相互之間存在一種或多種特定關係的的資料元素的集合。需要注意的是這裡的資料結構指的是邏輯結構,既關係,而非儲存結構。所謂的結構其實就是資料元素存在的前後關係,因此在實際儲存中各元素必須包括與前後元素的關係資訊。

          根據資料結構中各資料元素之間的關係的複雜程度分為:線性結構和非線性結構。線性結構中的只有一個根節點,並且每個節點最多隻有一個前件和一個後件。簡單的說就是每一個節點都最多隻與兩個幾點有關係。那麼資料結構中除了線性結構就是非線性結構。如所示:

 

          為了更好的理解線性表、棧、隊列、樹、二叉樹等的層次關係,請先看,然後先對線性部分作總結。

線性資料結構

         線性表概念:線性表是資料結構中最簡單、最重要的一種結構。資料元素線上性表中的位置只取決於他們自己的序號,即邏輯上或者說相對位置上是線性。需要特別注意的是線性表是以順序儲存結構儲存的,即按照邏輯上的線性關心來順序分配儲存空間。

         線性表運算:由於按照順序儲存結構儲存。因此在插入運算時,插入位置以後的元素需要後移一個空間。刪除時也需要刪除元素以後的全部元素都前移一個空間。

 

 

          棧:棧是線性表的一種特殊的線性表,所以它也以順序儲存結構儲存。而它的特殊是由於它的運算限定在表的一端進行操作,而另一端是封閉。即先進後出,後進先出。

          棧的運算:入棧運算時棧頂指標top加1然後再將新元素插入指標的位置。若指標當前已經指向儲存空間的最後一個位置則不能進行入棧操作,即上溢錯誤。退棧時和入棧操作相反,同時若指標為0時,即下溢錯誤。這個和SQL中的查詢有一點點類似。

 

          隊列的概念:隊列也是一種特殊的線性表,它限制在一端插入操作,為隊尾。另一端進行刪除操作,為對頭。即先進先出,後進後出。這裡需要注意隊列是以迴圈結構的方式儲存的。

          隊列的運算:入隊運算先將隊尾指標rear進一,即指向一個空的儲存空間,然後插入新元素。退隊時,對頭指標進一,即指向要刪除的元素的後一個元素。然後將元素刪除。同時,因為是迴圈儲存,所以當隊頭指標和隊尾指標重合時,則產生上溢或者下溢錯誤。

 

          線性單鏈表:線性鏈表和線性表的主要區別在於,不再以順序結構的方式儲存,而是在每個元素分為兩個部分,一部分存資料,一部分與之相關的元素的指標。單鏈表的指標只指向下一個資料。

          線性鏈表的運算:插入或刪除運算時,在插入位置插入新元素時,相鄰的元素所儲存的針需要變化。而其他無關的元素不需要變化。

 

          雙線性鏈表:它的指標一個指向上一個資料,一個指向下一個資料。

          雙向鏈表的運算:它的運算和單向鏈表操作上一致,只是插入和刪除時需要修改的指標不一樣。

 

          迴圈鏈表放下一篇部落格非線性一起講了,太長了。下一篇再說!

         

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.