c语言比较两个广义表是否相等
时间: 2024-11-05 12:30:59 浏览: 21
判别两个广义表是否相等的递归算法
4星 · 用户满意度95%
在C语言中,比较两个广义表(也称为链表或动态数组)是否相等,通常需要遍历这两个列表,并逐个比较它们的元素。如果元素相同并且两个列表都已到达终点,那么我们可以说它们相等;否则,它们不相等。这里是一个简单的示例,假设你有一个结构体`ListNode`表示列表节点:
```c
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
int areListsEqual(ListNode* list1, ListNode* list2) {
while (list1 && list2) {
if (list1->data != list2->data)
return 0; // 如果当前元素不同,返回0表示不相等
list1 = list1->next;
list2 = list2->next;
}
// 如果其中一个列表结束而另一个未结束,或者两者都结束但数据一致,它们可能长度不同
return !list1 && !list2 || (!list1 && list2->next == NULL) || (!list2 && list1->next == NULL);
}
```
在这个函数中,如果任何时候发现元素不同,我们就直接返回0;只有当两个列表都遍历完,且最后一个元素匹配,才返回非零值表示相等。
阅读全文