函數簽名:
int FindMax(struct IntNode *f) // f 為鏈表頭指針
struct IntNode {
int data;
struct IntNode *next;
};
int FindMax(struct IntNode *f) {
if (!f) { // 空鏈表檢查
printf("單鏈表為空\n");
exit(1);
}
int x = f->data; // 初始最大值為首節點數據
f = f->next; // 移至第二個節點
while (f) { // 遍歷剩餘節點
if (f->data > x) x = f->data; // 更新最大值
f = f->next;
}
return x; // 返回最大值
}
O(n),單次遍歷O(1),僅用常數額外變量| 情況 | 處理 |
|---|---|
| 空鏈表 | 打印錯誤並 exit(1) 終止程序 |
| 單節點 | 直接返回該節點 data |
| 所有值相同 | 返回該值 |
| 含負數 | 正常比較,無問題 |