PAT 第七章 棧 佇列和鍊錶

2021-10-07 20:44:23 字數 843 閱讀 1829

定義靜態鍊錶

struct node

;

程式開始前對鍊錶初始化。一般來說需要對鍊錶的***屬性進行初始化,將其定義為正常情況達不到的數字。
for

(int i =

0; i < maxn; i++

)

根據給出的首位址遍歷得到整條鍊錶。同時對性質*** 進行標記。比如設定***為有效結點,令***=true。

int p = begin, count =0;

while

(p !=-1

)

由於靜態鍊錶是使用位址直接對映(hash)的方式,這就會使得陣列下標的不連續,而很多時候題目給出的結點並不都是有效結點(即可能存在無效結點)。為了能夠可控地訪問有效結點,一般都需要對陣列進行排序以把有效結點移動到陣列左端,這樣就可以用第三步的count訪問它們。

既然要把有效結點移到前面,此時就可以使用之前定義的***來幫忙。在步驟2中***需要被初始化為比正常結點的***取值要小的數值。於是在寫sort函式時就可以根據***從大到小排序,就可以把有效結點移動到陣列左端。

一般來說,題目可能有額外要求。因此cmp函式需要有第二級排序。例如:如果題目中要求需要把鍊錶按結點順序排序,就需要在cmp函式中建立第二級排序。即在cmp函式的兩個引數節點中有無效結點時按***從大到小排序,而當兩個幾點都是有效節點時按照結點在鍊錶中的位置從小到大排序。

bool

cmp(node a, node b)

else

}

第七章 常量和字段

字段修飾符 const 常量的值時在編譯時確定的,被視為型別的一部分,是靜態成員.會導致建立元資料.引用這個常量時會把這個值直接嵌入il 中.static 靜態字段,型別的一部分,占用的記憶體是在型別物件中分配的.型別物件時在該型別第一次被訪問到的時候載入的.對於例項欄位則是在建立例項時分配的.而且...

第七章 常量和字段

目錄 7.1 常量 7.2 字段 常量是值從不變化的符號。定義常量符號時,它的值必須能在編譯時確定。確定後,編譯器將常量值儲存到程式集元資料中。意味著只能定義編譯器可以識別的基元型別常量。然而c 也可以定義非基元型別的常量變數,前提是把值設為null。基元型別有 boolean,char,byte,...

C Prlmer Plus 第七章 分支和跳轉

1 getchar 和putchar 專門為面向字元io設計的一對c函式。getchar 函式沒有引數,它返回來自輸入裝置的下乙個字元。比如 ch getchar 它就等價於 scanf c ch putchar 函式列印它的引數 比如 putchar ch 它就等價於 printf c ch 這兩...