欢迎来到天天文库
浏览记录
ID:37708711
大小:169.50 KB
页数:21页
时间:2019-05-29
《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
此文档下载收益归作者所有