当时做这一题的时候就感觉有点繁琐,其实也不难。感觉面试官就是想看看自己的基础水平在哪里。
当自己不想写,有必须要写的时候才发现很繁琐。原来打算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;
}
}
上面的实现有不少漏洞,甚至是错误的,比如简单的处理为 return R,return L 。这是导致内存泄露的源泉!!
现在以面向对象的方式再次实现如下,欢迎批评指正。
void list_::push_back(const int& value)
{
if (this->tail_==NULL)
{
this->head_=this->tail_=new node;
this->tail_->data=value;
}
else
{
this->tail_->next=new node;
this->tail_->next->data=value;
this->tail_=this->tail_->next;
}
}
void list_::merge_list(const list_& L,const list_& R,list_& result)
{
if (L.head_==NULL)
{
result= R;
}
else if (R.head_==NULL)
{
result= L;
}
else
{
pnode pL=L.head_;
pnode pR=R.head_;
while(pL&&pR)
{
if (pL->data < pR->data)
{
push_back(pL->data);
pL=pL->next;
}
else if (pR->data < pL->data)
{
push_back(pR->data);
pR=pR->next;
}
else
{
push_back(pL->data);
pL=pL->next;
pR=pR->next;
}
}
while (pL)
{
push_back(pL->data);
pL=pL->next;
}
while (pR)
{
push_back(pR->data);
pR=pR->next;
}
}
}
其中result =R用到了赋值操作符,其实现如下:
list_& list_::operator=(const list_& from)
{
copy(from);
return *this;
}
void list_::copy(const list_& from)
{
pnode p=from.head_;
while (p)
{
push_back(p->data);
p=p->next;
}
}
欢迎批评指正!!
分享到:
相关推荐
2013微软暑期实习笔试题(英文版),仅供参考
微软暑期实习笔试题.docx
米哈游笔试题目2022 米哈游暑期实习笔试题2022 米哈游暑期实习笔试题2022 米哈游暑期实习笔试题2022 米哈游暑期实习笔试题2022 米哈游暑期实习笔试题2022 米哈游暑期实习笔试题2022 米哈游暑期实习笔试题2022 米哈游...
清晰版,微软2013年暑期实习笔试题,笔试题的覆盖面还是很挺广泛的,操作系统进程、线程概念,C++语法,重中之重算法
2013年微软暑期实习生笔试试题详解,有时间看看
微软2013.4.6暑期实习笔试题.docx
此文档为2013年4月6日微软招聘暑期实习生的笔试题,为作者在综合了很多版本之后进行了个人修订的版本,里面包含了作者提供的参考答案以及具体分析。
2019腾讯产品暑期实习提前批笔试题(1).pdf
中国移动2013暑期实习笔试行测题(照片)
微软2012暑期实习生校园招聘笔试题,很好的一个练手机会,希望找工作的同学能够认真看一看。
2019腾讯产品暑期实习提前批笔试题.pdf
2013年4月6日微软时期实习生校园招聘笔试试题加详解
2011百度暑期实习生招聘笔试题-web前端开发,有部分答案
阿里巴巴2017暑期实习生笔试题(1).pdf
腾讯2017暑期实习生笔试题(1).pdf
文档中 有09年和10年百度实习笔试题 请需要的同学去看看
百度2012实习生校园招聘机器学习数据挖掘笔试试题,花了很多时间才找到的
2011腾讯北京暑期实习非技术类笔试笔经
2019腾讯交互设计暑期实习提前批笔试题.docx
百度2017暑期实习 产品运营生笔试题.pdf