请综合这一点写出完整的代码
时间: 2024-10-14 07:11:50 浏览: 17
当然,如果你想让用户输入两段字符串并检查它们是否相等,这里是一个完整的 C++ 示例代码,它包括了获取输入、字符串转链表以及比较链表内容的部分:
```cpp
#include <iostream>
#include <string>
#include <vector> // 用于存储链表节点
using namespace std;
class ListNode {
public:
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createLinkedList(const string& str) {
vector<int> values(str.begin(), str.end());
ListNode* head = new ListNode(values[0]);
ListNode* current = head;
for (int i = 1; i < values.size(); ++i) {
current->next = new ListNode(values[i]);
current = current->next;
}
return head;
}
bool areEqual(ListNode* list1, ListNode* list2) {
while (list1 && list2) {
if (list1->val != list2->val) {
return false;
}
list1 = list1->next;
list2 = list2->next;
}
return !list1 && !list2; // 如果两个链表都遍历完了,说明长度相等
}
int main() {
string str1, str2;
// 获取用户输入
cout << "请输入第一个回文字符串:";
getline(cin, str1);
cout << "请输入第二个回文字符串:";
getline(cin, str2);
// 转换为链表并比较
ListNode* list1 = createLinkedList(str1);
ListNode* list2 = createLinkedList(str2);
bool equal = areEqual(list1, list2);
// 输出结果
if (equal) {
cout << "这两个字符串形成的链表相等" << endl;
} else {
cout << "这两个字符串形成的链表不相等" << endl;
}
// 清理内存
delete list1;
delete list2;
return 0;
}
```
这个代码首先定义了一个链表节点类 `ListNode` 和相关的辅助函数,然后在主函数中获取用户输入,创建链表并调用 `areEqual` 函数进行比较。
阅读全文