1.编写“串块链存储表示头文件.h”,其中包含:初始化空串、生成一个其值等于串常量的串、复制串、判空串、串比较、串联接、取子串、求串长、串的模式匹配、显示串等基本操作。 2.编写“串块链主程序.cpp”,调用以上函数。要求有运行界面,可供用户输入数据
时间: 2024-10-14 20:07:23 浏览: 30
首先,我们创建一个名为`StringChainStorage.h`的头文件,用于声明字符串链存储结构及其相关的函数:
```cpp
#ifndef STRINGCHAIN_STORAGE_H
#define STRINGCHAIN_STORAGE_H
#include <iostream>
#include <string>
class StringNode {
public:
char data;
StringNode* next;
// 初始化节点
StringNode(char d = '\0') : data(d), next(nullptr) {}
};
class StringChain {
private:
StringNode* head;
int length;
public:
// 初始化空串
StringChain() : head(nullptr), length(0) {}
// 生成新串,值等于串常量
void createFromString(const std::string& str);
// 复制串
void copyFrom(const StringChain& other);
// 判空
bool isEmpty() const { return head == nullptr; }
// 比较两个串
int compare(const StringChain& other) const;
// 连接两个串
void concatenate(const StringChain& other);
// 取子串
StringChain substr(int start, int end) const;
// 求串长
int getLength() const { return length; }
// 模式匹配
bool isSubstring(const StringChain& pattern) const;
// 显示串
void display() const;
};
#endif // STRINGCHAIN_STORAGE_H
```
接下来,我们在`StringChainMain.cpp`中编写主程序,包括用户交互的部分:
```cpp
#include "StringChainStorage.h"
void StringChainMain() {
StringChain storage;
// 用户输入
std::cout << "请输入选项 (1-7): \n";
std::cout << "1. 创建空串\n"
<< "2. 从字符串创建串\n"
<< "3. 复制串\n"
<< "4. 判断空串\n"
<< "5. 串比较\n"
<< "6. 串联接\n"
<< "7. 取子串\n"
<< "8. 求串长\n"
<< "9. 模式匹配\n"
<< "10. 显示串\n";
while (true) {
int choice;
std::cin >> choice;
switch (choice) {
case 1:
storage.createFromString(std::string());
break;
// 其他选项类似,省略...
default:
std::cout << "无效选择,退出程序。\n";
break;
}
// 显示结果
storage.display();
std::cout << "\n";
}
}
int main() {
StringChainMain();
return 0;
}
```
在这个程序中,用户可以通过菜单选择不同的操作来处理字符串,例如创建空串、输入字符串、复制字符串等。当用户完成所有操作或输入无效选项时,程序会结束。
阅读全文