📅  最后修改于: 2023-12-03 15:00:13.247000             🧑  作者: Mango
在编写程序时,有时候需要检查两个链表是否相同,也就是说两个链表中的元素是否完全相同。本篇文章将介绍一种C程序来检查两个链表是否相同。
在编写C程序之前,需要先定义链表的结构。链表结构可以使用结构体来表示,如下所示:
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
其中,val
表示链表节点的值,next
表示指向下一个节点的指针。
本程序的思路是:先比较两个链表的长度是否相同,如果长度相同,则开始逐一比较两个链表的每个节点,如果每个节点的值都相等,则认为两个链表相同。
具体实现过程如下:
p
和q
分别指向两个链表的头节点。false
。true
。bool isSameList(ListNode* l1, ListNode* l2) {
// 先用两个指针p和q分别指向两个链表的头节点
ListNode* p = l1;
ListNode* q = l2;
// 分别遍历两个链表,统计它们的长度
int len1 = 0;
int len2 = 0;
while (p != NULL) {
len1++;
p = p->next;
}
while (q != NULL) {
len2++;
q = q->next;
}
// 如果长度不相等,则两个链表一定不相同,直接返回false
if (len1 != len2) {
return false;
}
// 如果长度相等,则分别逐一比较两个链表的每个节点的值是否相等
p = l1;
q = l2;
while (p != NULL && q != NULL) {
if (p->val != q->val) {
return false;
}
p = p->next;
q = q->next;
}
// 如果每个节点的值都相等,则两个链表相同,返回true
return true;
}
以上就是本篇文章介绍的C程序,它能够检查两个链表是否相同。如果要使用该程序,请将上述代码拷贝到你的C程序中。