要判断两个链表是否相等,需要比较它们的节点值以及节点的顺序。下面是一种常见的方法来判断两个链表是否相等:
以下是一个示例代码,演示了如何实现上述逻辑:
public boolean areLinkedListsEqual(ListNode head1, ListNode head2) {
ListNode curr1 = head1;
ListNode curr2 = head2;
// Step 1: 判断链表长度是否相等
while (curr1 != null && curr2 != null) {
curr1 = curr1.next;
curr2 = curr2.next;
}
if (curr1 != null || curr2 != null) {
return false; // 链表长度不相等
}
// Step 2: 比较节点值
curr1 = head1;
curr2 = head2;
while (curr1 != null && curr2 != null) {
if (curr1.val != curr2.val) {
return false; // 节点值不相等
}
curr1 = curr1.next;
curr2 = curr2.next;
}
// Step 3: 比较完所有节点,两个链表相等
return curr1 == null && curr2 == null;
}