C++笔试题经典总汇:链表反转、String类实现
4星 · 超过85%的资源 需积分: 0 32 浏览量
更新于2024-07-27
收藏 1MB PDF 举报
C++笔试题汇总
以下是对C++笔试题汇总的知识点总结:
**链表反转**
链表反转是一个经典的面试题,也是一个非常基础的问题。给定一个单向链表,如何将其反转?反转后的链表将变为原链表的逆序排列。
例如,一个链表是这样的:1->2->3->4->5,通过反转后将变为5->4->3->2->1。
解决这个问题有两种方法:遍历方法和递归方法。
**遍历方法**
遍历方法最容易想到的方法是遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。
源代码如下:
```c
struct linka{
int data;
linka* next;
};
void reverse(linka*& head){
if(head == NULL)
return;
linka* pre, *cur, *ne;
pre = head;
cur = head->next;
while(cur){
ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next = NULL;
head = pre;
}
```
**递归方法**
递归方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。
源代码如下:
```c
linka* reverse(linka* p, linka*& head){
if(p == NULL || p->next == NULL){
head = p;
return p;
}else{
linka* tmp = reverse(p->next, head);
tmp->next = p;
return p;
}
}
```
注意:递归方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。
**String类**
String类是一个基本的字符串类,定义如下:
```c
class String{
public:
String(const char* str = NULL); // 通用构造函数
String(const String& another); // 拷贝构造函数
~String(); // 析构函数
String& operator=(const String& rhs); // 赋值函数
};
```
这个类提供了基本的字符串操作,包括构造函数、拷贝构造函数、析构函数和赋值函数。
这些问题都是C++笔试题汇总中的一部分,需要candidates具备基础的C++知识和编程能力。
2010-06-28 上传
124 浏览量
2012-08-28 上传
2010-10-27 上传
2014-07-21 上传
270 浏览量
2010-03-26 上传
2010-10-26 上传
gzhujsj
- 粉丝: 0
- 资源: 29
最新资源
- 新型智能电加热器:触摸感应与自动温控技术
- 社区物流信息管理系统的毕业设计实现
- VB门诊管理系统设计与实现(附论文与源代码)
- 剪叉式高空作业平台稳定性研究与创新设计
- DAMA CDGA考试必备:真题模拟及章节重点解析
- TaskExplorer:全新升级的系统监控与任务管理工具
- 新型碎纸机进纸间隙调整技术解析
- 有腿移动机器人动作教学与技术存储介质的研究
- 基于遗传算法优化的RBF神经网络分析工具
- Visual Basic入门教程完整版PDF下载
- 海洋岸滩保洁与垃圾清运服务招标文件公示
- 触摸屏测量仪器与粘度测定方法
- PSO多目标优化问题求解代码详解
- 有机硅组合物及差异剥离纸或膜技术分析
- Win10快速关机技巧:去除关机阻止功能
- 创新打印机设计:速释打印头与压纸辊安装拆卸便捷性