资源描述:
《华为面试大全》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、华为全套完整试题高级题6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。slnodetype*Delete(slnodetype*Head,intkey){}中if(Head->number==key){Head=Pointer->next;free(Pointer);break;}Back=Pointer;Pointer=Pointer->next;if(Pointer->number==key){Back->next=Pointer->next;free(Pointer);break;}voiddel
2、ete(Node*p){if(Head=Node)while(p)}有一个16位的整数,每4位为一个数,写函数求他们的和。解释:整数1101010110110111和1101+0101+1011+0111感觉应该不难,当时对题理解的不是很清楚,所以写了一个函数,也不知道对不对。疑问:既然是16位的整数,1101010110110111是2进制的,那么函数参数怎么定义呢,请大虾指教。答案:用十进制做参数,计算时按二进制考虑。/*n就是16位的数,函数返回它的四个部分之和*/charSumOfQuaters(unsignedshortn){ch
3、arc=0;inti=4;do{c+=n&15;n=n>>4;}while(--i);returnc;}有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数.(华为)#includeintmain(){inta[]={10,6,9,5,2,8,4,7,1,3};intlen=sizeof(a)/sizeof(int);inttemp;for(inti=0;i4、=temp;if(a[i]==i+1)i++;}for(intj=0;jnext;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}head->next=NULL;head=p
5、;returnhead;}2写出程序删除链表中的所有接点voiddel_all(node*head){node*p;while(head!=NULL){p=head->next;free(head);head=p;}cout<<"释放空间成功!"<