您的位置:首页 > 职场人生

面试题

2014-03-20 22:05 134 查看

一、将无符号32位整形数转换为字符串

void itoch(unsigned int tmp)
{
string str;
unsigned int t;
if(tmp == 0) str="0";
else{
while(tmp != 0){
t = tmp%10;
str.insert(0,1,(char)(t+'0'));
tmp = tmp/10;
}
}
cout<<str<<endl;
getchar();
}


二、如何判断单链表中没有循环

设置两个链表指针p和q,p完成指向下一个元素时,q要完成指向下下个元素(不一定是上述方式,但q遍历链表的速度要快于p),若指针q先等于null,则单链表没有循环;若一直没有一个指针能等于null,且出现p == q的情况,则单链表存在死循环。

三、分配电话号码问题

背景介绍:人们对于电话号码的记忆比较差,但对于单词的记忆却很好,所以在分配电话号码的时候,系统随机生成一串数字号码,需要将其翻译成有意义的单词,每生成一个单词都应该去词典查找该单词是否有意义。现假设拨号键上10个数字符,每个对应3个字母,且互不相同(明显多于26个字母,抛开常识,假设现在有30个字母)。如何让系统依据这一串号码来生成有意义的单词。

对于一个数字与三个字符的,可以用C++的multimap类型实现,
然后词典可以用B+数存储,不过占用的存储可能会很大,或者用26叉树存储。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: