微软暑期实习笔试题 合并两个有序单链表
当时做这一题的时候就感觉有点繁琐,其实也不难。感觉面试官就是想看看自己的基础水平在哪里。
当自己不想写,有必须要写的时候才发现很繁琐。原来打算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;}}