栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

合并两个排序的链表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

合并两个排序的链表

您的代码过载,

if
插入-
s来处理“特殊”情况,这使它非常膨胀并且难以阅读。当您决定“按代码”处理特殊情况而不是找到“按数据”处理特殊情况时,通常会发生这种情况。大卫·惠勒(David
Wheeler)的声明说:“计算机科学中的所有问题都可以通过另一种间接解决方案来解决”。该“额外级别的间接”通常与列表配合使用,有助于显着减少由这些列表造成的混乱
if


为了说明上述内容,这是我的代码的样子

#define SWAP_PTRS(a, b) do { void *t = (a); (a) = (b); (b) = t; } while (0)Node* MergeLists(Node* list1, Node* list2) {  Node *list = NULL, **pnext = &list;  if (list2 == NULL)    return list1;  while (list1 != NULL)  {    if (list1->data > list2->data)      SWAP_PTRS(list1, list2);    *pnext = list1;    pnext = &list1->next;    list1 = *pnext;  }  *pnext = list2;  return list;}

有人可能会争辩说,在

pnext
指针中使用额外级别的间接寻址实际上会使代码更难以阅读。我同意对于新手来说,这种方法可能会遇到一些困难,但是对于有经验的程序员,这应该很容易理解。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650290.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号