迄今只参加了M南京笔试,可惜自己不是计算机出身,还有好多东西得学啊……

M的最后一题是编程:

输入:单链表L0、L1、L2……Ln-1、Ln,将链表变为:L0、Ln、L1、Ln-1、L2……

算法:

  1. 、将链表分成前后两个部分:
  2. 前一个链表长度 >= 后一链表长度;
  3. 简单
  4.  
  5. 、反转后一个链表;
  6. 简单
  7.  
  8. 、合并两个链表;
  9. 简单
  10.  
  11. 、调用以上接口;
  12. gameover

算法实现:

  1. typedef struct Node Node_t;
  2. Node_t *list_half(Node_t *head)
  3. {
  4. Node_t *rv = NULL;
  5. Node_t *start = head, *end = head;
  6.  
  7. while(end && end->next && end->next->next)
  8. {
  9. end = end->next->next;
  10. start = start->next;
  11. }
  12.  
  13. if(start != NULL)
  14. {
  15. rv = start->next;
  16. start->next = NULL;
  17. }
  18.  
  19. return rv;
  20. }
  21.  
  22. Node_t *list_reverse(Node_t *head)
  23. {
  24. Node_t *rv = head;
  25. Node_t *prev = NULL,
  26. *current= head,
  27. *next = NULL;
  28.  
  29. while(current)
  30. {
  31. next = current->next;
    current->next = prev;
  32. prev = current;
  33. current = next;
  34. }
  35.  
  36. rv = prev;
    return rv;
  37. }
  38.  
  39. /* head_first.len >= head_second.len
  40. * or: please check next_second == NULL
  41. */
  42. Node_t *list_merge(Node_t *head_first, Node_t *head_second)
  43. {
  44.  
  45. Node_t *rv = head_first;
  46. Node_t *next_first = NULL, *next_second = NULL;
  47.  
  48. #define LEN_DEFENSE
  49. #undef LEN_DEFENSE
  50. #ifdef LEN_DEFENSE
  51. Node_t **tail_chek = NULL;
  52.  
  53. if(head_first == NULL)
    return head_second;
  54. #endif
  55.  
  56. while(head_first && head_second)
  57. {
  58. next_first = head_first->next;
  59. next_second = head_second->next;
  60. head_first->next = head_second;
  61. head_second->next = next_first;
  62.  
  63. #ifdef LEN_DEFENSE
  64. tail_chek = &head_second->next;
  65. #endif
  66.  
  67. head_first = next_first;
  68. head_second = next_second;
  69. }
  70.  
  71. #ifdef LEN_DEFENSE
    if(tail_check)
    {
  72.      *tail_check = head_second;
    }
  73. #endif
  74.  
  75. return rv;
  76. }
  77.  
  78. Node_t *list_result(Node_t *head)
  79. {
  80. Node_t *head_halflist = list_half(head);
  81. head_halflist = list_reverse(head_halflist);
  82. head = list_merge(head, head_halflist);
  83. return head;
  84. }

可是最后我把list_result中的最后的“return head" 写成了 ”return 0“,原因在于:

我开始想让他们提供接口,我写出的程序进行调用,因此自己就写了main函数;后来,我想不一定要生成可执行程序,所以自己提供个接口给他们调用获得返回值,结果我只改了main的函数名和参数,最后的返回值忘改了。

行百里者,半九十……

还是好好看内存管理吧,Z先生指定的书还没看完……

2013.9.29

附:晚上同学说了下M的题,我看了下网上关于最后一天的解答,羞愧地无地自容啊,自己写的错误程序误导了他人;我昨天写的程序有误(反转),处理有冗余(合并)。如果有人看了我的随笔记录,如有错误,可以在文中指出,也可以发邮件给我……感谢

2013——M笔试南京——程序的更多相关文章

  1. Microsoft Visual Studio Ultimate 2013 RC 离线安装程序

    Microsoft Visual Studio Ultimate 2013 RC 离线安装程序 ☆ 微软官网地址:☆ http://www.microsoft.com/en-us/download/d ...

  2. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目

    默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...

  3. SharePoint 2013 代码创建应用程序目录(App Catalog)

    众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地S ...

  4. Office 365 - SharePoint 2013 Online 之应用程序开发

    1.给站点添加完Napa后,在网站内容里点击Napa,如下图: 2.创建一个新的app,如下图: 3.可以在Napa里添加新的项目,如下图: 4.添加新的文件,可以添加web页面.样式表.脚本,如下图 ...

  5. vs 2013 Express 无法启动程序xxx.exe,系统找不到指定文件

    由于实验室有人用了含病毒的软件,网管把实验室出口给封了,周末人家又不上班.看样子树莓派是玩不成了,所以昨天在宿舍写windows程序,最基本的窗口程序,听说这段代码初学者至少要自己敲5遍以上.代码如下 ...

  6. SharePoint 2013 创建web应用程序报错"This page can’t be displayed"

    错误描述 This page can’t be displayed •Make sure the web address http://centeradmin is correct. •Look fo ...

  7. C/C++笔试经典程序(二)

    1.下面5个函数哪个能够成功进行两个数的交换? swap1传的是值的副本,在函数体内被修改了形参p.q(实际参数a.b的一个拷贝),p.q的值确实交换了,但是它们是局部变量,不会影响到主函数中的a和b ...

  8. C/c++笔试经典程序(一)

    1.输出结果比较 1) 输出结果:21 2) 输出结果:12.虽然循环只进行了一次,但是对!X++来说,X还是进行了自加运算. 2.指针运算 输出结果8,8.程序运行时,printf语句是从右往左进行 ...

  9. 2013 ACM/ICPC南京邀请赛B题(求割点扩展)

    题目链接:http://icpc.njust.edu.cn/Contest/194/Problem/B B - TWO NODES 时间限制: 10000 MS 内存限制: 65535 KB 问题描述 ...

随机推荐

  1. [转]mysql delete 使用别名 语法

    原文地址:https://www.cnblogs.com/wuyun-blog/p/6178303.html 今天删除数据,写了这么条sql语句, DELETE   from  sys_menus s ...

  2. RabbitMQ安装 ubuntu12.04LTS

    RabbitMQ安装需要安装较多的依赖包,之前如果安装过RabbitMQ-server必须要先彻底删除. 重装的ubuntu系统(ubuntu server)的开发环境几乎是裸的,再重新编译安装erl ...

  3. Java 源码赏析 - java.lang - Void

    被人鄙视了,于是也来读读源码... package java.lang; /** * The Void class is an uninstantiable placeholder class to ...

  4. hbase源码系列(十四)Compact和Split

    先上一张图讲一下Compaction和Split的关系,这样会比较直观一些. Compaction把多个MemStore flush出来的StoreFile合并成一个文件,而Split则是把过大的文件 ...

  5. SpringBoot 开启 Actuator

    在生产环境中,需要实时或定期监控服务的可用性.spring-boot 的actuator(监控)功能提供了很多监控所需的接口.简单的配置和使用如下: 1.引入依赖: <dependency> ...

  6. 小程序文件上传uploadFile

    前台代码: bindPhoto(e) { var that = this; wx.chooseImage({ count: 1, sizeType: ['original','compressed'] ...

  7. Python中sorted()方法的用法

    Python中sorted()方法的用法 2012-12-24 22:01:14|  分类: Python |字号 订阅 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对i ...

  8. 【转】Windows 7 API Internet Connection Sharing(ICS) 与 Wireless Hosted Network构建本地AP

    原文:http://hi.baidu.com/ritrachiao/item/bf7715e6bb8cb3a0c10d75be [此刻我要大大地记录一下!] 这个折腾了我好几天的Windows 7 A ...

  9. thinkphp 伪静态 自定义后缀

    <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...

  10. 实验四 使用ASP.NET内置对象 总结

    这次实验内容是ASP.NET的一些内置对象的熟悉,感觉看到了上学期JSP的影子,很多地方都很像.像Response对象,Request对象,Context对象等等.以前我老是搞混Response对象和 ...