已知字符串S1和S2都采用链式,设计一个算法,判断S1,S2是否相等,相等返回1,否则返回0,c语言
时间: 2024-10-24 15:05:36 浏览: 6
在C语言中,你可以通过遍历两个链表节点并比较它们的值以及指针来判断两个链表是否相等。这里是一个简单的步骤描述:
1. 定义一个函数 `isListEqual` 接收两个链表头节点作为参数,`struct Node* head1` 和 `struct Node* head2`。
2. 初始化两个标志变量 `equal` 和 `firstVisited` 为 `true`。`equal` 表示当前位置的节点值相等,`firstVisited` 判断是否访问了第一个链表的第一个节点。
3. 使用循环结构,如 `while (head1 != NULL && head2 != NULL)`:
a. 比较当前节点的值:`if (head1->data != head2->data) { equal = false; break; }`
b. 更新节点指针:`head1 = head1->next; head2 = head2->next;`
4. 如果遍历结束都没有发现不相等,说明链表相等,返回 1;如果中途某个时刻 `equal` 设置为 `false` 或者有一个链表提前结束,返回 0。
```c
#include <stdbool.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
bool isListEqual(Node* head1, Node* head2) {
bool equal = true;
bool firstVisited = true;
while (head1 != NULL && head2 != NULL) {
if (firstVisited) {
firstVisited = false;
} else {
if (head1->data != head2->data) {
equal = false;
break;
}
}
head1 = head1->next;
head2 = head2->next;
}
return equal ? 1 : 0;
}
```
阅读全文