c_c++笔试题目及答案

c_c++笔试题目及答案

ID:9926744

大小:101.00 KB

页数:43页

时间:2018-05-15

c_c++笔试题目及答案_第1页
c_c++笔试题目及答案_第2页
c_c++笔试题目及答案_第3页
c_c++笔试题目及答案_第4页
c_c++笔试题目及答案_第5页
资源描述:

《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.什么是“引用”?申明和使用“引用”要注意哪些问

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。