C++面试题精华:链表反转与String类实现
需积分: 12 46 浏览量
更新于2024-07-26
收藏 210KB PDF 举报
在C++的编程面试中,链表反转和字符串类操作是常见的考察点。本文将分别讨论这两个主题。
1. 链表反转
单向链表的反转是面试中常被提问的基础问题。面试者可能会让你实现一个函数来翻转链表,例如将1->2->3->4->5变成5->4->3->2->1。最直观的方法是使用迭代法,如提供的C++代码所示:
```cpp
struct Linka {
int data;
Linka* next;
};
void reverse(Linka*& head) {
if (head == NULL)
return;
Linka* pre = head;
Linka* cur = head->next;
while (cur) {
Linka* ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next = NULL;
head = pre;
}
```
这段代码首先检查链表是否为空,然后通过三个指针(pre、cur和ne)交替更新节点的指针,使得当前节点的next指向前一个节点,最终将原头节点设为新的头节点。
另一种方法是递归实现,但要注意递归可能导致尾节点形成环,因此在递归结束后需要将返回节点的next置为NULL,代码如下:
```cpp
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;
}
}
```
在这个递归版本中,每次递归都处理掉一个节点,直到遍历完整个链表。
2. String类的实现
面试者可能还会要求你实现一个简单的`String`类,包括通用构造函数、拷贝构造函数、析构函数和赋值函数。以下是一个基本的实现:
```cpp
class String {
public:
// 通用构造函数
String(const char* str = NULL) : m_data(new char[strlen(str) + 1]) {
if (str)
strcpy(m_data, str);
}
// 拷贝构造函数
String(const String& another) : m_data(new char[strlen(another.m_data) + 1]) {
strcpy(m_data, another.m_data);
}
// 析构函数,释放内存
~String() {
delete[] m_data;
}
// 赋值函数
String& operator=(const String& rhs) {
if (this != &rhs) {
delete[] m_data;
m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data, rhs.m_data);
}
return *this;
}
private:
char* m_data; // 用于保存字符串
};
```
这里定义了一个`String`类,包含了构造函数(包括默认构造函数和拷贝构造函数),析构函数负责在对象不再使用时释放动态分配的内存,并提供了一个赋值运算符重载,用于安全地更新字符串内容。
以上就是C++面试中常见的链表反转和简单`String`类实现的知识点,理解和掌握这些基础概念有助于你在实际编程中更自如地应对相关问题。
190 浏览量
136 浏览量
点击了解资源详情
115 浏览量
204 浏览量
626 浏览量
2010-10-27 上传
2010-03-26 上传

_上下求索_
- 粉丝: 12
最新资源
- C#实现DataGridView过滤功能的源码分享
- Python开发者必备:VisDrone数据集工具包
- 解决ESXi5.x安装无网络适配器问题的第三方工具使用指南
- GPRS模块串口通讯实现与配置指南
- WinCvs客户端安装使用指南及服务端资源
- PCF8591T AD实验源代码与使用指南
- SwiftForms:Swift实现的表单创建神器
- 精选9+1个网站前台模板下载
- React与BaiduMapNodejs打造上海小区房价信息平台
- 全面解析手机软件测试的实战技巧与方案
- 探索汇编语言:实验三之英文填字游戏解析
- Eclipse VSS插件版本1.6.2发布
- 建站之星去版权补丁介绍与下载
- AAInfographics: Swift语言打造的AAChartKit图表绘制库
- STM32高频电子线路实验完整项目资料下载
- 51单片机实现多功能计算器的原理与代码解析