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

M的最后一题是编程:

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

算法:

、将链表分成前后两个部分:
前一个链表长度 >= 后一链表长度;
简单 、反转后一个链表;
简单 、合并两个链表;
简单 、调用以上接口;
gameover

算法实现:

typedef struct Node Node_t;
Node_t *list_half(Node_t *head)
{
Node_t *rv = NULL;
Node_t *start = head, *end = head; while(end && end->next && end->next->next)
{
end = end->next->next;
start = start->next;
} if(start != NULL)
{
rv = start->next;
start->next = NULL;
} return rv;
} Node_t *list_reverse(Node_t *head)
{
Node_t *rv = head;
Node_t *prev = NULL,
*current= head,
*next = NULL; while(current)
{
next = current->next;
current->next = prev;
prev = current;
current = next;
} rv = prev;
return rv;
} /* head_first.len >= head_second.len
* or: please check next_second == NULL
*/
Node_t *list_merge(Node_t *head_first, Node_t *head_second)
{ Node_t *rv = head_first;
Node_t *next_first = NULL, *next_second = NULL; #define LEN_DEFENSE
#undef LEN_DEFENSE
#ifdef LEN_DEFENSE
Node_t **tail_chek = NULL; if(head_first == NULL)
return head_second;
#endif while(head_first && head_second)
{
next_first = head_first->next;
next_second = head_second->next;
head_first->next = head_second;
head_second->next = next_first; #ifdef LEN_DEFENSE
tail_chek = &head_second->next;
#endif head_first = next_first;
head_second = next_second;
} #ifdef LEN_DEFENSE
if(tail_check)
{
     *tail_check = head_second;
}
#endif return rv;
} Node_t *list_result(Node_t *head)
{
Node_t *head_halflist = list_half(head);
head_halflist = list_reverse(head_halflist);
head = list_merge(head, head_halflist);
return head;
}

可是最后我把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. Node.js学习笔记(5)--文件简单操作

    说明(2017-5-3 11:53:45): 1. foo.js var fs = require("fs"); var documents = []; fs.readdir(&q ...

  2. 基于html5背景图片自适应代码

    基于html5背景图片自适应代码是一款背景不随滚动条滚动,会根据分辨率不同自动匹配对应的背景图片.效果图如下: 在线预览   源码下载 实现的代码. css代码: .jawbone-hero .jaw ...

  3. IO -阻塞,非阻塞, 同步,异步

    转载自: http://blog.csdn.net/historyasamirror/article/details/5778378 同步(synchronous) IO和异步(asynchronou ...

  4. HashTable浅析

    本文转载自: http://rock3.info/blog/2013/12/05/hashtable%E6%B5%85%E6%9E%90/ 一.Hash特点 Hash,就是杂凑算法,Hash(str1 ...

  5. Xcode搭建Python编译环境

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  6. 【Unity笔记】使物体(船)漂浮在水面上——浮力

    在官方论坛看到一个关于怎么使物体漂浮在水面上的讨论:https://forum.unity3d.com/threads/floating-a-object-on-water.31671/ 水动力系统 ...

  7. [Selenium.2.Testing.Tools.Beginners.Guide]读书笔记

    Assert, this allows the test to check if the element is on the page, if it is not available then the ...

  8. virtualbox ubuntu 虚拟画面卡顿问题

    要在虚拟机全局配置里面添加选项:

  9. Spark的机器学习算法mlib的例子运行

    Spark自带了机器学习的算法mlib,页面网址 http://spark.incubator.apache.org/docs/latest/mllib-guide.html 但是运行的时候,遇到了很 ...

  10. nfs挂载hdfs,实现云存储

    本来不知道nfs是啥,因为群里的Harry童鞋有个问题,如何把本地目录挂载到hdfs上,搞什么云存储,说那么巧就是那么巧,HDP支持nfs,然后我就照着文档的说明去做,最后弄出来了. 1.修改机器上的 ...