欢迎来到天天文库
浏览记录
ID:12805266
大小:71.00 KB
页数:10页
时间:2018-07-19
《c_c++语言程序设计笔试面试题30》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、华为面试题:怎么判断链表中是否有环?boolCircleInList(Link*pHead){if(pHead==NULL
2、
3、pHead->next==NULL)//无节点或只有一个节点并且无自环return(false);if(pHead->next==pHead)//自环return(true);Link*pTemp1=pHead;//step1Link*pTemp=pHead->next;//step2while(pTemp!=pTemp1&&pTemp!=NULL&&pTemp->next!=NULL
4、){pTemp1=pTemp1->next;pTemp=pTemp->next->next;}if(pTemp==pTemp1)return(true);return(false);}两个字符串,s,t;把t字符串插入到s字符串中,s字符串有足够的空间存放t字符串voidinsert(char*s,char*t,inti){memcpy(&s[strlen(t)+i],&s[i],strlen(s)-i);memcpy(&s[i],t,strlen(t));s[strlen(s)+strlen(t)]='
5、';}1。编写一个C函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的。char*search(char*cpSource,charch){char*cpTemp=NULL,*cpDest=NULL;intiTemp,iCount=0;while(*cpSource){if(*cpSource==ch){iTemp=0;cpTemp=cpSource;while(*cpSource==ch)++iTemp,++cpSource;if(iTemp>iCount)iCount=iTe
6、mp,cpDest=cpTemp;if(!*cpSource)break;}++cpSource;}returncpDest;}2。请编写一个C函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值。intsearch(char*cpSource,intn,charch){inti;for(i=0;i7、到本节点,将next指向next->next,并随后删除原next指向的节点。#includevoidfoo(intm,intn){printf("m=%d,n=%d",m,n);}intmain(){intb=3;foo(b+=3,++b);printf("b=%d",b);return0;}输出:m=7,n=4,b=7(VC6.0)这种方式和编译器中得函数调用关系相关即先后入栈顺序。不过不同编译器得处理不同。也是因为C标准中对这种方式说明为未定义,所以各个编译器厂商都有自己得理解8、,所以最后产生得结果完全不同。因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得结果。最后是看编译器优化。2.写一函数,实现删除字符串str1中含有的字符串str2.第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数组)/*雅虎笔试题(字符串操作)给定字符串A和B,输出A和B中的最大公共子串。比如A="aocdfe"B="pmcdfa"则输出"cdf"*///Author:azhen#include9、dio.h>#include#includechar*commanstring(charshortstring[],charlongstring[]){inti,j;char*substring=malloc(256);if(strstr(longstring,shortstring)!=NULL)//如果……,那么返回shortstringreturnshortstring;for(i=strlen(shortstring)-1;i>0;i--)//否则,开始循环计算10、{for(j=0;j<=strlen(shortstring)-i;j++){memcpy(substring,&shortstring[j],i);substring[i]=' ';if(strstr(longstring,substring)!=NULL)returnsubstring;}}returnNULL;}main(){char*str1=malloc(256);char*str2=m
7、到本节点,将next指向next->next,并随后删除原next指向的节点。#includevoidfoo(intm,intn){printf("m=%d,n=%d",m,n);}intmain(){intb=3;foo(b+=3,++b);printf("b=%d",b);return0;}输出:m=7,n=4,b=7(VC6.0)这种方式和编译器中得函数调用关系相关即先后入栈顺序。不过不同编译器得处理不同。也是因为C标准中对这种方式说明为未定义,所以各个编译器厂商都有自己得理解
8、,所以最后产生得结果完全不同。因为这样,所以遇见这种函数,我们首先要考虑我们得编译器会如何处理这样得函数,其次看函数得调用方式,不同得调用方式,可能产生不同得结果。最后是看编译器优化。2.写一函数,实现删除字符串str1中含有的字符串str2.第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数组)/*雅虎笔试题(字符串操作)给定字符串A和B,输出A和B中的最大公共子串。比如A="aocdfe"B="pmcdfa"则输出"cdf"*///Author:azhen#include9、dio.h>#include#includechar*commanstring(charshortstring[],charlongstring[]){inti,j;char*substring=malloc(256);if(strstr(longstring,shortstring)!=NULL)//如果……,那么返回shortstringreturnshortstring;for(i=strlen(shortstring)-1;i>0;i--)//否则,开始循环计算10、{for(j=0;j<=strlen(shortstring)-i;j++){memcpy(substring,&shortstring[j],i);substring[i]=' ';if(strstr(longstring,substring)!=NULL)returnsubstring;}}returnNULL;}main(){char*str1=malloc(256);char*str2=m
9、dio.h>#include#includechar*commanstring(charshortstring[],charlongstring[]){inti,j;char*substring=malloc(256);if(strstr(longstring,shortstring)!=NULL)//如果……,那么返回shortstringreturnshortstring;for(i=strlen(shortstring)-1;i>0;i--)//否则,开始循环计算
10、{for(j=0;j<=strlen(shortstring)-i;j++){memcpy(substring,&shortstring[j],i);substring[i]=' ';if(strstr(longstring,substring)!=NULL)returnsubstring;}}returnNULL;}main(){char*str1=malloc(256);char*str2=m
此文档下载收益归作者所有