資料結構學習筆記(一)

2021-09-20 06:41:32 字數 2539 閱讀 3329

1.結構型

使用者自己製作的資料型別

typedef struct typea;
2.指標型

如果a是個指標型變數,且指向變數b,則a中存放了變數b所在的位址。*a就是取變數b的內容(x=*a;等價於x=b;),&b就是取變數b的位址,語句a=&b;就是將變數b的位址存於a中,即指標a指向b。

指標與結構體結合

鍊錶的結構型定義如下:

typedef struct node  node;
注意:凡是結構型(假設名為a)內部有這樣的指標型(假設名為b),即b是用來存放和a型別相同的結構體變數位址的指標型(如圖1.2中,結點a的指標next,next所指的結點b與結點a是屬於同一結構型的),則在定義a的typedef struct語句之後都要加上a這個結構型的名字。與之前定義的結構型typea進行比較,會發現這裡的結構型node在定義方法上的不同。

typedef struct btnode  btnode;
製作新結點的方法,以二叉樹結點的製作為例,有以下兩種寫法:

方法一:

btnode bt;
方法二(常用):

btnode *bt; 

bt = (btnode*)malloc(sizeof(btnode));

方法二句中的bt是個指標型變數,用它來儲存剛製作好的結點的位址。因bt是變數,雖然現在bt指向了剛生成的結點,但是在以後必要的時候bt可以離開這個結點轉而指向其他結點。而方法一句則不行,方法一中的bt就是某個結點的名字,一旦定義好,它就不能脫離這個結點。從這裡就看到方法二比方法一更靈活,因此方法二用的多,並且方法二完全可以取代方法一(方法二中bt的值不改變的話就相當於方法一)。

拓展:取bt指標的值:(*bt).data;bt->data

將演算法中基本操作的執行次數作為演算法的時間複雜度。時間複雜度不是執行完一段程式的總時間,而是其中基本操作的總次數。

計算乙個演算法時間複雜度的步驟如下:

1.確定演算法中的基本操作,以及問題的規模。

2.根據基本操作執**況計算出規模n的函式f(n),並確定時間複雜度為t(n)=o(f(n)中增長最快的項/此項的係數)。

常用的各種時間複雜度大小的比較關係如下:

$$o(1) ≤ o(}^) ≤ o(n) ≤ o(n}^) ≤ o(n^) ≤ o(n^) ≤ …… ≤ o(n^) ≤ o(2^)$$

演算法的空間複雜度指演算法在執行時所需儲存空間的度量,主要考慮在演算法執行過程中臨時占用的儲存空間的大小(和時間複雜度一樣,以數量級的形式給出)。

資料元素是資料的基本單位,在電腦程式中通常將其作為乙個整體進行考慮和處理。

資料項是資料結構中討論的最小單位,是資料記錄中最基本的,不可分的資料單位。

資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。資料結構包括3方面的內容:邏輯結構,儲存結構和對資料的運算

資料的邏輯結構是對資料之間關係的描述,它與資料的儲存結構無關,同一種邏輯結構可以有多種儲存結構。歸納起來資料的邏輯結構主要有兩大類。

1.線性結構 簡單地說,線性結構是乙個資料元素的有序(次序)集合。它有四個基本特徵:

資料據結構中線性結構指的是資料元素之間存在著「一對一」的線性關係的資料結構。如(a1,a2,a3,.....,an),a1為第乙個元素,an為最後乙個元素,此集合即為乙個線性結構的集合。

2.非線性結構 與線性結構不同,非線性結構中的結點存在著一對多的關係,它又可以細分為樹形結構和圖形結構。

資料的物理結構又稱為儲存結構,是資料的邏輯結構在計算機中的表示(又稱映像)。它包括資料元素的表示和關係的表示。當資料元素是由若干資料項構成的時候,資料項的表示稱為資料域;比如乙個鍊錶結點,結點包含值域和指標域,這裡結點可以看做乙個資料元素,其中的值域和指標域都是這個資料元素的資料域。

資料元素之間的關係在計算機中有兩種不同的表示方法:順序映像和非順序映像。對應的兩種不同的儲存結構分別是順序儲存結構和鏈式儲存結構。順序映像是借助資料元素在儲存器中的相對位置來表示資料元素之間的邏輯關係;非順序映像是借助指標表示資料元素之間的邏輯關係。

實際上,在資料結構中有以下4種常用的儲存方法。

1.順序儲存方法 順序儲存結構是儲存結構型別中的一種,該結構是把邏輯上相鄰的結點儲存在物理位置上相鄰的儲存單元中,結點之間的邏輯關係由儲存單元的鄰接關係來體現。由此得到的儲存結構為順序儲存結構,通常順序儲存結構式借助於計算機程式語言(例如c/c++)的陣列來描述的。

2.鏈式儲存方法 該方法不要求邏輯上相鄰的結點在物理位置上亦相鄰,結點間的邏輯關係是由附加的指標字段表示的。由此得到的儲存表示稱為鏈式儲存結構,通常借助於計算機程式語言(例如c/c++)的指標型別來描述它。

4.雜湊(或雜湊)儲存方法 該方法的基本思想是根據結點的關鍵字通過雜湊函式直接計算出該結點的儲存位址。這種儲存方法本質上是順序儲存方法的擴充套件。

資料結構學習筆記 一

1 資料結構 眾所周知,電腦程式是對資訊進行的加工處理.在一般情況下,這些資訊並不是沒有組織,資訊之間往往具有重要的結構關係,這就是資料結構的內容.設有乙個 號碼薄,它記錄了n個人的名字和其相應的 號碼,假定按如下形式安排 a1,b1 a2,b2 an,bn 其中ai,bi i 1,2 n 分別表示...

資料結構學習筆記 一

資料結構研究非數值計算的程式設計問題中的操作物件,以及他們之間關係和操作 程式設計 資料結構 演算法 資料結構 資料 資料的構成方式 資料,能夠由計算機操作的物件,能夠由計算機識別,並輸入給計算機處理的符號集合。兩個特徵 可以輸入到計算機中,能被電腦程式處理 資料,資料元素,資料項,資料物件,資料結...

資料結構學習筆記(一)

資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和操作的學科。通常有下列四類基本結構 1 集合 2 線性結構 3 樹形結構 4 圖狀結構或網狀結構 資料結構的形式定義為 data structure d,s 其中d是資料元素的有限集,s是d上關係的有限集。結構定義中的 ...