2013——M笔试南京——程序
迄今只参加了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笔试南京——程序的更多相关文章
- Microsoft Visual Studio Ultimate 2013 RC 离线安装程序
Microsoft Visual Studio Ultimate 2013 RC 离线安装程序 ☆ 微软官网地址:☆ http://www.microsoft.com/en-us/download/d ...
- Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目
默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...
- SharePoint 2013 代码创建应用程序目录(App Catalog)
众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地S ...
- Office 365 - SharePoint 2013 Online 之应用程序开发
1.给站点添加完Napa后,在网站内容里点击Napa,如下图: 2.创建一个新的app,如下图: 3.可以在Napa里添加新的项目,如下图: 4.添加新的文件,可以添加web页面.样式表.脚本,如下图 ...
- vs 2013 Express 无法启动程序xxx.exe,系统找不到指定文件
由于实验室有人用了含病毒的软件,网管把实验室出口给封了,周末人家又不上班.看样子树莓派是玩不成了,所以昨天在宿舍写windows程序,最基本的窗口程序,听说这段代码初学者至少要自己敲5遍以上.代码如下 ...
- 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 ...
- C/C++笔试经典程序(二)
1.下面5个函数哪个能够成功进行两个数的交换? swap1传的是值的副本,在函数体内被修改了形参p.q(实际参数a.b的一个拷贝),p.q的值确实交换了,但是它们是局部变量,不会影响到主函数中的a和b ...
- C/c++笔试经典程序(一)
1.输出结果比较 1) 输出结果:21 2) 输出结果:12.虽然循环只进行了一次,但是对!X++来说,X还是进行了自加运算. 2.指针运算 输出结果8,8.程序运行时,printf语句是从右往左进行 ...
- 2013 ACM/ICPC南京邀请赛B题(求割点扩展)
题目链接:http://icpc.njust.edu.cn/Contest/194/Problem/B B - TWO NODES 时间限制: 10000 MS 内存限制: 65535 KB 问题描述 ...
随机推荐
- [转]mysql delete 使用别名 语法
原文地址:https://www.cnblogs.com/wuyun-blog/p/6178303.html 今天删除数据,写了这么条sql语句, DELETE from sys_menus s ...
- RabbitMQ安装 ubuntu12.04LTS
RabbitMQ安装需要安装较多的依赖包,之前如果安装过RabbitMQ-server必须要先彻底删除. 重装的ubuntu系统(ubuntu server)的开发环境几乎是裸的,再重新编译安装erl ...
- Java 源码赏析 - java.lang - Void
被人鄙视了,于是也来读读源码... package java.lang; /** * The Void class is an uninstantiable placeholder class to ...
- hbase源码系列(十四)Compact和Split
先上一张图讲一下Compaction和Split的关系,这样会比较直观一些. Compaction把多个MemStore flush出来的StoreFile合并成一个文件,而Split则是把过大的文件 ...
- SpringBoot 开启 Actuator
在生产环境中,需要实时或定期监控服务的可用性.spring-boot 的actuator(监控)功能提供了很多监控所需的接口.简单的配置和使用如下: 1.引入依赖: <dependency> ...
- 小程序文件上传uploadFile
前台代码: bindPhoto(e) { var that = this; wx.chooseImage({ count: 1, sizeType: ['original','compressed'] ...
- Python中sorted()方法的用法
Python中sorted()方法的用法 2012-12-24 22:01:14| 分类: Python |字号 订阅 1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对i ...
- 【转】Windows 7 API Internet Connection Sharing(ICS) 与 Wireless Hosted Network构建本地AP
原文:http://hi.baidu.com/ritrachiao/item/bf7715e6bb8cb3a0c10d75be [此刻我要大大地记录一下!] 这个折腾了我好几天的Windows 7 A ...
- thinkphp 伪静态 自定义后缀
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...
- 实验四 使用ASP.NET内置对象 总结
这次实验内容是ASP.NET的一些内置对象的熟悉,感觉看到了上学期JSP的影子,很多地方都很像.像Response对象,Request对象,Context对象等等.以前我老是搞混Response对象和 ...