主题:今天随便说两句,关于日本 -- 绝对不是白领
https://github.com/mkirchner/linked-list-good-taste
第一版
void remove_cs101(IntList *l, IntListItem *target)
{
IntListItem *cur = l->head, *prev = NULL;
while (cur != target) {
prev = cur;
cur = cur->next;
}
if (prev) {
prev->next = cur->next;
} else {
l->head = cur->next;
}
}
第二版
void remove_elegant(IntList *l, IntListItem *target)
{
IntListItem **p = &l->head;
while ((*p) != target) {
p = &(*p)->next;
}
*p = target->next;
}
第一版中,删除第一个元素是一个特例,需要用if单独处理,但是第二版中通过使用指针消除了这个特例,变得更加一般化了。这种好代码不是光学好数学就能想出来的,因为做数学题并不需要使用指针(︶︹︺)
- 相关回复 上下关系8
压缩 10 层
🙂我正好有亲戚是学数学后来去写代码了, 5 桥上 字551 2021-02-18 00:35:39
🙂王珢是好为大言, 2 杨微粒 字545 2021-02-18 02:43:46
🙂Java语言学校的危险性 2 杨微粒 字1372 2021-02-17 18:30:40
🙂Linus Torvalds举出的好代码和坏代码的例子
🙂解存在但不可求的例子 11 宝特勤 字806 2021-02-17 16:29:32
🙂又借宝贴研究研究 7 高三三班 字7008 2021-02-21 22:32:11
🙂谢高三河友发起精彩讨论 10 宝特勤 字1570 2021-02-21 23:28:25
🙂宝河友客气又谦虚,我是受你启发来夹带一下:) 3 高三三班 字291 2021-02-22 10:33:36