已知字符串S1和S2采用链式,设计一个算法,判断S1和S2是否相等,若相等则返回1,否则返回0 C语言版
时间: 2024-10-23 10:16:02 浏览: 59
在C语言中,我们可以使用递归的方式来设计一个算法来比较两个链表表示的字符串S1和S2是否相等。这里假设每个字符都被存储在链表节点的数据部分,链表头结点指向第一个字符。
```c
#include <stdbool.h>
// 定义链表节点结构体
typedef struct Node {
char data;
struct Node* next;
} Node;
// 比较链表表示的字符串是否相等
int isStringEqual(Node* S1, Node* S2) {
if (S1 == NULL && S2 == NULL) { // 如果两个链表都为空,它们相等
return 1;
} else if (S1 == NULL || S2 == NULL) { // 如果其中一个链表为空,它们不相等
return 0;
} else if (S1->data != S2->data) { // 如果当前字符不相等,它们也不相等
return 0;
} else { // 否则,继续比较下一个字符
return isStringEqual(S1->next, S2->next);
}
}
// 主函数演示如何使用
int main() {
// 创建并初始化链表...
Node* S1 = ...;
Node* S2 = ...;
int result = isStringEqual(S1, S2);
printf("%d\n", result); // 输出1或0
return 0;
}
```
阅读全文