首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

微软暑期见习笔试题 合并两个有序单链表

2012-08-28 
微软暑期实习笔试题 合并两个有序单链表当时做这一题的时候就感觉有点繁琐,其实也不难。感觉面试官就是想看

微软暑期实习笔试题 合并两个有序单链表

当时做这一题的时候就感觉有点繁琐,其实也不难。感觉面试官就是想看看自己的基础水平在哪里。

 当自己不想写,有必须要写的时候才发现很繁琐。原来打算20行都不要,却越写越多,有的地方居然挤不下。

最后只能时间到了,我还在纠结,因为给的是5分钟的时间。我自己也没想到居然没搞定。我还介绍了思路,但显然不是面试官想要的结果。他认为时间应该是绰绰有余的。

回来之后痛定思痛!自己静下心来,慢慢写,10分钟,测试成功。代码如下,希望看官能与我交流。

pnode merge_list(pnode L,pnode R){if (L==NULL){return R;}else if (R==NULL){return L;}else{pnode head=NULL,p=NULL;head=p=new node;if (L->data<R->data){head->data=L->data;L=L->next;}else if (R->data < L->data){head->data=R->data;R=R->next;}else{head->data=L->data;L=L->next;R=R->next;}while(L&&R){p->next=new node;if (L->data<R->data){p->next->data=L->data;L=L->next;}else if (R->data < L->data){p->next->data=R->data;R=R->next;}else{p->next->data=L->data;L=L->next;R=R->next;}p=p->next;}while (L){p->next=new node;p->next->data=L->data;L=L->next;p=p->next;}while (R){p->next=new node;p->next->data=R->data;R=R->next;p=p->next;}return head;}}


 

1楼zhoulitcqq2分钟前
既然是有序单链表,一定存在一个保持其有序的方法,或者是insert,或者是sort。使用有序链表已经存在的方法可以大大减少代码量。

热点排行