欢迎来到天天文库
浏览记录
ID:9926744
大小:101.00 KB
页数:43页
时间:2018-05-15
《c_c++笔试题目及答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的:1->2->3->4->5通过反转后成为5->4->3->2->1。 最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下: 1.structlinka{ 2.intdata; 3.linka*next; 4.}; 5.voidreverse(linka*&head){ 6.if(head==NULL)
2、7. return; 8.linka*pre,*cur,*ne; 9.pre=head; 10.cur=head->next; 11.while(cur) 12.{ 13. ne=cur->next; 14. cur->next=pre; 15. pre=cur; 16. cur=ne; 17.} 18.head->next=NULL; 19.head=pre; 20.} 还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前
3、先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下: 1.linka*reverse(linka*p,linka*&head) 2.{ 3.if(p==NULL
4、
5、p->next==NULL) 4.{ 5. head=p; 6. returnp; 7.} 8.else 9.{ 10. linka*tmp=reverse(p->
6、next,head); 11. tmp->next=p; 12. returnp;[Page] 13.} 14.} ②已知String类定义如下: classString { public: String(constchar*str=NULL);//通用构造函数 String(constString&another);//拷贝构造函数 ~String();//析构函数 String&operater=(constString&rhs);//赋值函数 private: char*m_data;//用于保存字符串
7、}; 尝试写出类的成员函数实现。 答案: String::String(constchar*str) { if(str==NULL)//strlen在参数为NULL时会抛异常才会有这步判断 { m_data=newchar[1]; m_data[0]='{content}'; } else { m_data=newchar[strlen(str)+1]; strcpy(m_data,str); } } String::String(constString&another) { m_data=newchar[strlen(a
8、nother.m_data)+1]; strcpy(m_data,other.m_data); } String&String::operator=(constString&rhs) { if(this==&rhs) return*this; delete[]m_data;//删除原来的数据,新开一块内存 m_data=newchar[strlen(rhs.m_data)+1]; strcpy(m_data,rhs.m_data); return*this; } String::~String() { delete[]m_data;
9、} ③网上流传的c++笔试题汇总 1.求下面函数的返回值(微软) intfunc(x) { intcountx=0; while(x) { countx++; x=x&(x-1); } returncountx; } 假定x=9999。答案:8 思路:将x转化为2进制,看含有的1的个数。 2.什么是“引用”?申明和使用“引用”要注意哪些问
此文档下载收益归作者所有