資料結構和C程式設計知識點

2021-09-27 03:47:06 字數 3636 閱讀 5791

001:數的結點總數和度的關係

任一棵樹中,結點總數=度數*該度數對應的結點數+1

h i ( key ) = ( h ( key )+ d i ) mod m ( i = 1,2,…… , k ( k ≤ m – 1))

增量 d 可以有不同的取法,並根據其取法有不同的稱呼:

003:二叉樹計算公式總結:

n 個節點的二叉樹一共有 ( (2n)! ) / ( n! * ( n+1 ) ! ) 種;

n 層二叉樹的第n層最多為 2 (n-1) 個,n 層二叉樹做多有 2n - 1個;

對任何一棵二叉樹t,如果其終端節點數為 n0,度為2的節點數為 n2,則 n0 = n2 + 1

二叉樹節點計算公式 n = n0 + n1 + n2,度為0的葉子節點比度為2的節點數多乙個。 n= 1 * n1 + 2 * n2 + 1

具有n個節點的完全二叉樹的深度為 log2n + 1

004:完全二叉樹699個節點,則葉子節點有多少個

005:c語言指標

p 是普通的整型變數;

int p;
p 是指向整型資料的指標變數(從 p 開始, 先與 * 結合,說明 p 是乙個指標,然後再與 int 結合);

int

*p;

p 是整型資料組成的陣列(從 p 處開始,先與 [ ] 結合,然後與int 結合);

int p[3]

;

p 是指向整型資料的指標變數所組成的陣列(從 p 處開始,先與[ ]結合,因為其優先順序比*高,所以p 是乙個陣列,然後再與*結合,說明陣列裡的元素是指標型別);

int

*p[3

];

p 是指向由整型資料組成的陣列的指標(從p 處開始,先與 * 結合,說明 p 是乙個指標然後再與[ ]結合,說明指標所指向的內容是乙個陣列,然後再與int 結合);

int

(*p)[3

];

p 是指向整型指標變數的指標變數(先與*結合,說是p 是乙個指標變數,然後再與*結合,指標所指向的元素是指標變數,然後再與int 結合);

int

**p;

p 是引數為乙個int型別返回值為乙個int型別的函式;

intp(

int)

;

p 是乙個指向有乙個整型引數且返回型別為整型的函式的指標 (從p 處開始,先與指標結合,說明p 是乙個指標,然後與()結合,說明指標指向的是乙個函式,然後再與()裡的int 結合,說明函式有乙個int 型的引數,再與最外層的int 結合,說明函式的返回型別是整型);

int

(*p)

(int

);

可以先跳過,不看這個型別,過於複雜從p 開始,先與()結合,說明p 是乙個函式,然後進入()裡面,與int 結合,說明函式有乙個整型變數引數,然後再與外面的*結合,說明函式返回的是乙個指標,然後到最外面一層,先與結合,說明返回的指標指向的是乙個陣列,然後再與*結合,說明陣列裡的元素是指標,然後再與int 結合,說明指標指向的內容是整型資料.所以p 是乙個引數為乙個整資料且返回乙個指向由整型指標變數組成的陣列的指標變數的函式;

int*(

*p(int))

[3];

006:c語言中的字元陣列和字串之間的關係
char carr=

;char str=

"ilovec"

;//sizeof長度為7個,因為末尾會自動加『\0』,即null來做字串的結尾

char sarr[10]

="ilovec"

;/*用sizeof()求長度*/

printf

("carr 的 sizeof:%lu\n"

,sizeof

(carr));

//6printf

("str 的 sizeof:%lu\n"

,sizeof

(str));

//7printf

("sarr 的 sizeof:%lu\n"

,sizeof

(sarr));

//10

/*用strlen()求長度*/

printf

("carr 的 strlen:%lu\n"

,strlen

(carr));

printf

("str 的 strlen:%lu\n"

,strlen

(str));

//6printf

("sarr 的 strlen:%lu\n"

,strlen

(sarr));

//6```c

c語言有兩種表示字串的方法,

一種是字元陣列,如:

```c

char str=

"i love c"

;//

另一種是字串常量,如:

char

*str =

"i love c"

;

它們在記憶體中的儲存位置不同:

字元陣列儲存在全域性資料區或棧區,第二種形式的字串儲存在常量區,使得字元陣列可以讀取和修改,

而字串常量只能讀取不能修改。

char

*str =

"hello world!"

;str =

"i love c!"

;//正確

str[3]

='p'

;//錯誤 會出現段錯誤(segment fault)或者寫入位置錯誤

如果只涉及到對字串的讀取,那麼字元陣列和字串常量都能夠滿足要求;如果有寫入(修改)操作,那麼只能使用字元陣列,不能使用字串常量

007:sizeof操作符

單目操作符,以位元組形式給出了其運算元的儲存大小。

sizeof操作符不能用於函式型別,不完全型別或位字段。不完全型別指具有未知儲存大小的資料型別,如未知儲存大小的陣列型別、未知內容的結構或聯合型別、void型別等。sizeof(void)都不是正確形式。

union運算元的sizeof是其最大位元組成員的位元組數。struct運算元的sizeof是這種型別物件的總位元組數,包括任何填充在內。

struct

a;

在某些機器上sizeof(a)=16,而一般sizeof(char)+ sizeof(double)=9。

這是因為編譯器在考慮對齊問題時,在結構中插入空位以控制各成員物件的位址對齊。如double型別的結構成員x要放在被8整除的位址。

如下:

struct

s1;struct s2

s2 ;

printf

("s1 的 sizeof:%lu\n"

,sizeof

(s1));

//24

printf

("s2 的 sizeof:%lu\n"

,sizeof

(s2));

//16

詳細參見

007:sizeof操作符

C 資料結構知識點

資料結構 data stucture 的定義 資料結構由資料元素的集合和該集合中資料元素之間的關係組成。即。線性結構,即線性表 linearlist 陣列 array 檔案,棧 stack 佇列 queue 優先順序佇列 非線性結構 集合,圖 c 類預設訪問級別是private struct預設訪問...

資料結構 知識點

定義 度 兒子數 分支節點 除了根和葉子的節點 根的深度為1 資料結構的分類 資料結構分為邏輯結構和物理結構。邏輯結構 表現資料之間的關係的一種資料結構,分為線性結構和非線性結構。物理結構 表現資料如何儲存的一種資料結構,通常分為順序結構 鏈式結構 索引結構和雜湊結構。有序表,也叫有序線性表,資料按...

資料結構知識點

1 線性結構與非線性結構 線性結構 線性表,棧,隊 乙個根節點,最多乙個前節點乙個後節點 首節點無前節點,尾接點無後節點 非線性結構 樹形結構,圖形結構 線性表 由一組資料元素構成,資料元素的位置只取決於自己的序號 陣列 棧 限定只能在表的一端進行插入和刪除,先進後出,只能在棧頂進出 佇列 只能在表...