c++面试编程题

c++面试编程题

ID:37708711

大小:169.50 KB

页数:21页

时间:2019-05-29

c++面试编程题_第1页
c++面试编程题_第2页
c++面试编程题_第3页
c++面试编程题_第4页
c++面试编程题_第5页
资源描述:

《c++面试编程题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、常用经典编程例子一个链表的结点结构structNode{intdata;Node*next;};typedefstructNodeNode;(1)已知链表的头结点head,写一个函数把这个链表逆序(Intel)Node*ReverseList(Node*head)//链表逆序{if(head==NULL

2、

3、head->next==NULL)returnhead;Node*p1=head;Node*p2=p1->next;Node*p3=p2->next;p1->next=NULL;while(p3!=NULL){p2->nex

4、t=p1;p1=p2;p2=p3;p3=p3->next;}p2->next=p1;head=p2;returnhead;}(2)已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)Node*Merge(Node*head1,Node*head2){if(head1==NULL)returnhead2;if(head2==NULL)returnhead1;Node*head=NULL;Node*p1=NULL;Node*p2=NULL;if(head1->data

5、2->data){head=head1;p1=head1->next;p2=head2;}else{head=head2;p2=head2->next;p1=head1;}Node*pcurrent=head;while(p1!=NULL&&p2!=NULL){if(p1->data<=p2->data){pcurrent->next=p1;pcurrent=p1;p1=p1->next;}else{pcurrent->next=p2;pcurrent=p2;p2=p2->next;}}if(p1!=NULL)pcurrent

6、->next=p1;if(p2!=NULL)pcurrent->next=p2;returnhead;}(3)已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)答案:Node*MergeRecursive(Node*head1,Node*head2){if(head1==NULL)returnhead2;if(head2==NULL)returnhead1;Node*head=NULL;if(head1->datadata){head=hea

7、d1;head->next=MergeRecursive(head1->next,head2);}else{head=head2;head->next=MergeRecursive(head1,head2->next);}returnhead;写一个函数找出一个整数数组中,第二大的数(microsoft)答案:constintMINNUMBER=-32767;intfind_sec_max(intdata[],intcount){intmaxnumber=data[0];intsec_max=MINNUMBER;for(int

8、i=1;imaxnumber){sec_max=maxnumber;maxnumber=data[i];}else{if(data[i]>sec_max)sec_max=data[i];}}returnsec_max;}编程实现单链表的插入Node*InsertNode(Node*Head,intnum){Node*newNode=newNode;newNode->data=num;if(!Head)//此时为空链表{newNode->next=NULL;returnnewNode

9、;}Node*p=Head;Node*q=NULL;//q指向p结点之前的结点while(p)//此时寻找位置{if(p->datanext;}else//此时找到了位置break;}if(p==Head)//插入到头结点之前{newNode->next=Head;Head=newNode;}elseif(!p)//插入到尾结点之后,此时q指向尾结点{q->next=newNode;newNode->next=NULL;}else//插入到p结点和q结点之间{newNode->next=q->ne

10、xt;q->next=newNode;}returnHead;}编程实现双链表删除结点(注意它和单链表删除结点的情况有所不同)Node*DoubleLink_DelNode(Node*Head,intnum){Node*p=Head;if(!p)returnNULL;whil

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。