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 问题描述 ...
随机推荐
- 基于jQuery实现滚动新闻代码下载
分享一款基于jQuery实现滚动新闻代码下载.这是一款基于bootstrup 3实现的响应式jQuery滚动新闻插件.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div ...
- jsp----标签编程(JSTL)
标签编程简介 JSP的开发是在HTML代码中嵌入了大量的Java代码,但是这样一来会使得JSP页面中充满了Java程序,修改或维护起来非常的不方便, 定义一个简单的标签----空标签 要想实现一个标签 ...
- eclipse mars 4.5.1 自定义工具栏
window>>perspective>>Customize Perspective
- Creating a Physical Standby Database 11g
1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...
- HTTP Status 500 PWC6188 jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
报错如下: 解决方案: 1.可能是依赖引用错了,注意 JSP 应依赖: <!-- JSP --> <dependency> <groupId>javax.servl ...
- Mongo分片集群脚本
bash大法好啊,一键玩mongo. 我的mongo版本是:MongoDB shell version v4.0.2 这里准备为大家献上Mongo创建分片和可复制集的脚本,以及在部署的时候踩的坑. 分 ...
- C#中[] 、List、Array、ArrayList等数据结构的差异简述
[] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...
- Oracel扩展表空间
--表空间查看 SELECT tbs, sum(totalM) as total, sum(usedM) as UserdM, sum(remainedM) as remainedM, as User ...
- C# 通过反射获取MVC Controller里的类名,方法名,参数列表,返回值类型,Description描述,自定义Attribute
需要反射的DLL里的一个类: namespace ElegantWM.WebUI.Areas.Admin.Controllers { [Description("功能模块管理")] ...
- 百度地图Api进阶教程-默认控件和自定义控件2.html
<!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...