double_linked_list

Creator: coderz1093

Last updated:

0 purchases

double_linked_list Image
double_linked_list Images

Languages

Categories

Add to Cart

Description:

double linked list

Double Linked List #
A library presenting a generic double linked list.
Double linked list structure:

Usage #
Create a new empty list, from iterables or from another list
import 'package:double_linked_list/double_linked_list.dart';

main() {
final emptyList = DoubleLinkedList<int>.empty();

final fromList = DoubleLinkedList<int>.fromIterable([1, 2, 3]);
final fromListExtension = [1, 2, 3].toDoubleLinkedList();

final fromSet = DoubleLinkedList<int>.fromIterable({1, 2, 3});
final fromSetExtension = {1, 2, 3}.toDoubleLinkedList();

final copyList = DoubleLinkedList<int>.from(fromList);
final copyListMethod = copyList.copy();
}
copied to clipboard
Iterate over a list in normal or reverse order
import 'package:double_linked_list/double_linked_list.dart';

main() {
final list = [1, 3, 5].toDoubleLinkedList();
for (var node = list.first; !node.isEnd; node = node.next) {
node = node.insertAfter(node.content + 1);
}
print(list); // [1, 2, 3, 4, 5, 6]

for (var node = list.last; !node.isBegin; node = node.previous) {
print(node.content);
}
// 6 5 4 3 2 1
}
copied to clipboard
Be careful when iterating and inserting elements:
import 'package:double_linked_list/double_linked_list.dart';

main() {
final list = [1, 3, 5].toDoubleLinkedList();
for (var node = list.first; !node.isEnd; node = node.next) {
node.insertAfter(node.content + 1);
}
}
copied to clipboard
⚠️Program stuck at an endless loop.
To avoid this, move to the inserted node:
import 'package:double_linked_list/double_linked_list.dart';

main() {
final list = [1, 3, 5].toDoubleLinkedList();
for (var node = list.first; !node.isEnd; node = node.next) {
node = node.insertAfter(node.content + 1);
}
}
copied to clipboard
You can also use most of the functions available for Iterables, and some others:
import 'package:double_linked_list/double_linked_list.dart';

main() {
final list = [1, 2, 3].toDoubleLinkedList();

list.forEach(print);

list.apply((e) => e * e);
print(list); // [1 | 4 | 9]

print(list.where((e) => e.isOdd)); // [1 | 9]

print(list.reduce((value, element) => value + element)); // 14
print(list.fold<int>(-14, (value, element) => value + element)); // 0

print(list.any((e) => e > 2)); // true
print(list.every((e) => e > 2)); // false

print(list.firstWhere((e) => e > 2)); // (4)
print(list.lastWhere((e) => e > 2)); // (9)

}
copied to clipboard
Complete example at example.
Features and bugs #
Please file feature requests and bugs at the issue tracker.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.