Skip to content

Instantly share code, notes, and snippets.

@gladimdim
Last active October 15, 2021 10:03
Show Gist options
  • Save gladimdim/4b296bde093eba359f31d220847d01b7 to your computer and use it in GitHub Desktop.
Save gladimdim/4b296bde093eba359f31d220847d01b7 to your computer and use it in GitHub Desktop.
// import 'package:cli/linked_list.dart';
/// https://www.hackerrank.com/challenges/compare-two-linked-lists/
/// Compare two linked lists
int equalLinkedLists(Node a, Node b) {
Node? f1 = a;
Node? f2 = b;
while (true) {
if (f1 == null || f2 == null) {
return f1 == f2 ? 1 : 0;
}
if (f1.value != f2.value) {
return 0;
}
f1 = f1.next;
f2 = f2.next;
}
}
void main() {
var a = Node<int>(10);
var b = Node<int>(20);
var c = Node<int>(30);
var d = Node<int>(40);
a.next = b;
b.next = c;
c.next = d;
var f1 = Node<int>(10, Node(20, Node(30)));
var f2 = Node<int>(10, Node(30, Node(30)));
var f3 = Node<int>(10, Node(20, Node(30)));
var f4 = Node<int>(10, Node(20, Node(30)));
var f5 = Node<int>(1, Node(2));
var f6 = Node<int>(1);
print("Lists are equal: ");
print(equalLinkedLists(a, a)); // 1
print(equalLinkedLists(a, b)); // 0
print(equalLinkedLists(f1, f2)); // 0
print(equalLinkedLists(f3, f4)); // 1
print(equalLinkedLists(f5, f6)); // 0
}
class Node<T> {
T value;
Node<T>? next;
Node(this.value, [this.next]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment