1.编写“串块链存储表示头文件.h”,其中包含:初始化空串、生成一个其值等于串常量的串、复制串、判空串、串比较、串联接、取子串、求串长、串的模式匹配、显示串等基本操作。 2.编写“串块链主程序.cpp”,调用以上函数。
时间: 2024-12-11 14:17:21 浏览: 8
在C++中,创建一个名为"StringBlockChain.h"的头文件,用于定义一个字符串链表的数据结构及其相关的操作函数,可以按照以下结构编写:
```cpp
// StringBlockChain.h
#ifndef STRINGBLOCKCHAIN_H
#define STRINGBLOCKCHAIN_H
#include <iostream>
#include <string>
class StringBlockChain {
public:
// 初始化空串
StringBlockChain();
// 生成值等于串常量的串
StringBlockChain(const std::string& str);
// 复制串
StringBlockChain(const StringBlockChain& other) = default;
// 判空串
bool isEmpty() const;
// 串比较
bool operator==(const StringBlockChain& other) const;
// 串联接
void concatenate(const StringBlockChain& other);
// 取子串
StringBlockChain substr(int start, int length = -1) const;
// 求串长
size_t length() const;
// 串的模式匹配
bool isSubstringPresent(const StringBlockChain& pattern) const;
// 显示串
void display() const;
private:
std::string data;
};
#endif // STRINGBLOCKCHAIN_H
```
接下来,在"StringBlockChain.cpp"文件中,实现上述公有成员函数:
```cpp
// StringBlockChain.cpp
#include "StringBlockChain.h"
StringBlockChain::StringBlockChain() : data("") {}
StringBlockChain::StringBlockChain(const std::string& str) : data(str) {}
bool StringBlockChain::isEmpty() const { return data.empty(); }
bool StringBlockChain::operator==(const StringBlockChain& other) const {
return data == other.data;
}
void StringBlockChain::concatenate(const StringBlockChain& other) {
data += other.data;
}
StringBlockChain StringBlockChain::substr(int start, int length) const {
if (start < 0 || (length > 0 && start + length > data.length())) {
throw std::invalid_argument("Invalid substring parameters");
}
return StringBlockChain(data.substr(start, length));
}
size_t StringBlockChain::length() const { return data.length(); }
bool StringBlockChain::isSubstringPresent(const StringBlockChain& pattern) const {
return data.find(pattern.data) != std::string::npos;
}
void StringBlockChain::display() const {
std::cout << "String: " << data << std::endl;
}
```
在主程序中,你可以像这样调用这些函数:
```cpp
int main() {
StringBlockChain sbc("Hello, World!");
sbc.concatenate(StringBlockChain(" CSDN!"));
sbc.display();
// ... 调用其他函数 ...
return 0;
}
```
阅读全文