C語言使用表驅動法重構if else分支太多的情況

2021-09-01 02:51:47 字數 628 閱讀 4795

今天工作中遇到這麼乙個情況:將25種字串分成17類,然後統計每一類中的數量

第一版**簡單粗暴,直接上if-else,**如下

if

(strcasestr

(str,

"a")

elseif(

strcasestr

(str,

"b")

elseif(

strcasestr

(str,

"c")

typedef

struct st_type_ st_type;

static

const st_type gtabtype=

,,,,

....

,};

然後是在函式中使用

int index =0;

int type =-1

;while

(gtabtype[index]

.str)

++index;}if

(type <0)

return

0;

這樣的**看起來就整潔多了,也更好維護。

C語言重構 328 奇偶鍊錶

所有題目源 git位址 題目給定乙個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 o 1 時間複雜度應為 o nodes nodes 為節點總數。示例 1 輸入 1...

C語言重構 207 課程表

所有題目源 題目你這個學期必須選修 numcourse 門課程,記為 0 到 numcourse 1 在選修某些課程之前需要一些先修課程。例如,想要學習課程 0 你需要先完成課程 1 我們用乙個匹配來表示他們 0,1 給定課程總量以及它們的先決條件,請你判斷是否可能完成所有課程的學習?示例 1 輸入...

C語言重構 143 重排鍊錶

所有題目源 git位址 題目給定乙個單鏈表 l l0 l1 ln 1 ln 將其重新排列後變為 l0 ln l1 ln 1 l2 ln 2 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。示例 1 給定鍊錶 1 2 3 4,重新排列為 1 4 2 3.示例 2 給定鍊錶 1 2 3 4...