设计一个算法Equal(),在链串上实现判断两个串是否相等的功能
时间: 2024-05-08 10:16:27 浏览: 11
算法思路:
首先比较两个链串的长度是否相等,若不相等,则两个串一定不相等;若相等,则逐个比较两个链串中的每个字符是否相等,若有不相等的字符,则两个串不相等,否则两个串相等。
算法步骤:
1. 定义一个函数Equal(str1, str2),其中str1和str2分别表示两个链串的头节点指针;
2. 定义两个指针p1和p2,分别指向str1和str2;
3. 定义两个变量len1和len2,分别表示str1和str2的长度;
4. 如果len1不等于len2,则返回false;
5. 从头节点开始,逐个比较p1和p2指向的字符是否相等,如果有不相等的字符,则返回false;
6. 如果比较完所有字符都相等,则返回true。
算法实现:
```
bool Equal(LinkStrNode *str1, LinkStrNode *str2) {
LinkStrNode *p1 = str1, *p2 = str2;
int len1 = 0, len2 = 0;
while (p1->next != NULL) {
len1++;
p1 = p1->next;
}
while (p2->next != NULL) {
len2++;
p2 = p2->next;
}
if (len1 != len2) {
return false;
}
p1 = str1->next;
p2 = str2->next;
while (p1 != NULL && p2 != NULL) {
if (p1->data != p2->data) {
return false;
}
p1 = p1->next;
p2 = p2->next;
}
return true;
}
```