數據類型與數據結構


先說數據結構(data structure)。一般來說數據結構指的都是結構化的東西,也就是說若干elements(這個詞不好翻譯,可以認為是基本元素)按照一定結構組成的。如數組,鏈表。可以看出這兩種都是由基本元素組成,而且形成一定結構(數組是物理內存連續,鏈表是用指針相連)。而組成的elements可以是復雜結構,如一個結構體組成的數組,或者有嵌套結構的elements。

數據類型(data type)強調類型,一般分為兩種,基本數據類型(int char等)和復雜數據類型(結構體等)。基本結構對應基本數據類型(如一個字符對應char型),復雜結構對應復雜數據類型(結構體)。這個概念是可以對應上面數據結構中的elements的類型。

想總結一下,數據放在elements中,每個elements一般都是線性地址相連的存儲,elements的類型叫數據類型,由elements組成的更復雜的結構叫做數據結構。

理解這兩個概念必須從數據入手,數據可以認為是在線性內存中連續存儲的一段信息,這段信息在內存中不過就是不加區分的01串而已。而數據類型是讓編程者和編譯器識別這段數據表達方式的一種定義。數據結構是將數據用某種方式組合起來的一種結構。所以數據才是核心。
C++數據類型
本機:win32

cout<<sizeof(short)<<" "<<sizeof(int)<<" "<<sizeof(long)<<" "<<sizeof(long long)<<endl;
cout<<sizeof(void)<<" "<<sizeof(bool)<<" "<<sizeof(char)<<" "<<sizeof(wchar_t)<<endl;
cout<<sizeof(float)<<" "<<sizeof(double)<<" "<<sizeof(long double)<<endl;

C++ 常用數據結構

數組 (Array)

  在程序設計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱為數組。在C語言中, 數組屬於構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字符數組、指針數組、結構數組等各種類別。

棧 (Stack)

  是只能在某一端插入和刪除的特殊線性表。它按照先進后出的原則存儲數據,先進入的數據被壓入棧底,最后的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最后一個數據被第一個讀出來)。

隊列 (Queue)

  一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列是按照“先進先出”或“后進后出”的原則組織數據的。隊列中沒有元素時,稱為空隊列。

鏈表 (Linked List)

  是一種物理存儲單元上非連續、非順序的存儲結構,它既可以表示線性結構,也可以用於表示非線性結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。

樹 (Tree)

  是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關系N,N滿足 以下條件:

 

  (1)有且僅有一個結點 K0,他對於關系N來說沒有前驅,稱K0為樹的根結點。簡稱為根(root)。 (2)除K0外,K中的每個結點,對於關系N來說有且僅有一個前驅。

 

  (3)K中各結點,對關系N來說可以有m個后繼(m>=0)。

圖 (Graph)

  圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。

堆 (Heap)

  在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。

散列表 (Hash)

  若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關系f為散列函數(Hash function),按這個思想建立的表為散列表

來自:http://www.zhihu.com/question/21165020/answer/19462086
http://c.biancheng.net/cpp/biancheng/view/103.html
http://blog.csdn.net/longhuahaha/article/details/8477290


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM