爲毛要學數據

  一個好的程序無非是選擇了一個合理的數據結構和一個好的算法。因此要學好數據結構,是提高進一步提升程序設計水平的關鍵之一。算法

什麼是數據結構數組

  1)數據結構的定義數據結構

  數據是人們利用文字符號、數字符號以及其餘規定的符號對現實世界的事物及其活動所作的抽象描述。性能

  數據元素是數據的基本單位(例如學生是一個數據元素)。設計

  數據結構是指數據以及相互之間的聯繫,能夠看做是相互間存在特定關係的數據元素的集合。3d

  數據的邏輯結構和存儲結構都反映了數據的結構關係。但一般所說的數據結構是指數據的邏輯結構,不涉及存儲結構的含義。指針

  一般採用二元組表示:B=(K,R)對象

  B是一種數據結構,它由數據元素的集合K和K上二元關係的集合R所組成。blog

  

  例如,學生表中有7個數據元素,依次用k1~k7表示,則對應的二元組表示爲B=(K,R)資源

  K={k1,k2,k3,k4,k5,k6,k7}

  R={r}

  r={<k1,k2>,<k2,k3>,<k3,k4>,<k4,k5>,<k5,k6>,<k6,k7>}

  數據結構還能狗利用圖形形象的表示出來,圖像中的每一個結點對應着一個數據元素,兩結點之間的連線對應着關係中的一個序偶。

  2)數據結構類型。

  數據結構分爲線性結構和非線性結構兩大類。

  線性結構中,開始結點和終端結點都是惟一的,除了開始結點和終端結點外,其他結點都有且僅有一個前驅,有且有一個後繼,順序表就是典型的線性結構。

  非線性結構又能夠細分爲樹形結構和圖形結構兩類。

  線性結構是樹形結構的特殊狀況,而樹形結構又是圖形結構的特殊狀況。

  圖形結構例子:

  K={a,b,c,d,e}

  R={r}

  r={(a,b),(a,c),(b,c),(c,d),(c,e),(d,e)}

  

  3)數據結構和數據類型

  數據類型最先出如今高級語言中,是對數據的取值範圍、每一數據的結構以及容許施加的操做的一種描述,在用程序語言編寫的程序中,每一個變量、常量或表達式都有一個它所屬的肯定的數據類型。

  數據類型可分爲簡單類型和結構類型兩種。

  簡單類型中的每一個數據都是沒法在分割的總體,如一個整數、實數、字符、指針等都是沒法在分割的總體,因此他們所屬的類型均爲簡單類型。

  結構類型是由簡單類型按照必定的規則構造而成,而且結構類型中能夠包含結構類型,因此一種結構類型中的數據能夠分解爲若個個簡單數據或結構數據,每一個結構數據仍可再分。

  數據類型也能夠被定義爲一種數據結構和可以對該數據結構進行的操做的集合。

  下面總結C語言中經常使用的數據類型。

  1.基本數據類型:int、float、char。int能夠有三個限定詞:short,long,unsigned。float有三種形式:float,double和long double。

  2.指針類型:對於定義int i,則&i操做是取變量i的地址;對於定義int *p,這裏的p是指向一個整數的指針,則*p操做是取p指針所指的值,即p所指地址的內容。

  3.數組類型:int a[10],定義了包含10個整數的數組a。

  4.結構體類型:

  struct teacher{

    int no;

    char name[8];

    int age;

  }

  5.共用體類型

  union tag{

    int no1;

    char no2[2];

  }

  6.自定義類型

  typedef char elemtype;

算法及其描述

  數據結構、算法和程序是密不可分的,他們之間的關係能夠表示爲:數據結構+算法=程序。

  1)什麼是算法。

  一個算法具備如下5個重要特性:

  1.有窮性。一個算法必須老是在執行有窮步以後結束,且每一步均可在有窮時間內完成。

  2.肯定性。一個算法中每一條指令必須有確切的含義,不會產生二義性。

  3.可行性。一個算法是可行的,即算法中描述的操做均可以經過已經實現的基本運算執行有限次來實現。

  4.輸入。一個算法有零個或多個輸入。這些輸入取自於某個選定的對象的集合。

  5.輸出。一個算法有一個或多個輸出。這些輸出是同輸入有某些特定關係的量。

  2)算法的性能標準。

  判斷一個算法的優劣主要有如下幾個標準:

  1.正確性。要求算法可以正確的執行預先規定的功能。這是最重要也是最基本的規則。

  2.可以使用性。算法應當是可讀的,便可讀性好。爲了達到這個要求,算法的邏輯必須是清晰的、簡單的和結構化的。

  3.可讀性。算法應當是可讀的,便可讀性好。爲了達到這個要求,算法的邏輯必須是清晰的、簡單的和結構化的

  4.健壯性。要求算法具備很好的容錯性,即提供例外處理,可以對不合理的數據進行檢查,不會常常出現異常中斷或司機現象。

  5.效率。算法的效率主要指算法執行時計算機資源的消耗,包括存儲和運行時間的開銷,前者叫作算法的空間代價,後者叫作算法的時間代價。

相關文章
相關標籤/搜索