LinkedList

Run Settings
LanguageDart
Language Version
Run Command
class LinkedList{ late Map head; late var tail; late int length; LinkedList(value){ this.head = { 'value': value, 'next': null, }; this.tail = this.head; this.length = 1; } // let linkedList = { // head:{ // value:10, // next{ // value:5, // next: next{ // value:6, // next:null // } // } // } // } // add at the back append(value){ var newNode = { 'value': value, 'next': null, }; tail['next'] = newNode; tail = newNode; length++; } // add to front prepend(value){ var newNode = { 'value': value, 'next': head }; head = newNode; length++; } // add at any position and increment length prinlnt(index){ if(index != 0){ dynamic array = []; dynamic currentNode = head; while(currentNode != null){ array.add(currentNode['value']); currentNode = currentNode['next']; } print(array); } } insert(index, value){ var newNode = { 'value': value, 'next': null, }; if(index == 0){ this.prepend(value); }else if(index >= length){ this.append(value); }else{ dynamic previousNode = traverseList(index -1); // this commented is also valid but might take more time; // dynamic currentNode = traverseList(index ); //but this will take more memory dynamic pointer = previousNode['next'] ; previousNode['next'] = newNode; newNode['next'] = pointer;; // newNode['next'] = currentNode; length++; } } remove(index){ if(index == 0){ dynamic pointer = head['next']; // head = null; head = pointer; length--; }else if(index == length-1){ dynamic previousNode = traverseList(index -1); dynamic pointer = tail['next']; // tail = null; previousNode['next'] = pointer; length--; }else{ dynamic previousNode = traverseList(index -1); dynamic unwantedNode = previousNode['next']; previousNode['next'] = unwantedNode['next']; length--; } } reverse(){ dynamic first = head; tail = head; dynamic second = head['next']; if(first['next'] == null){ return first; } while(second != null ){ dynamic third = second['next']; second['next'] = first; first = second; second = third; } head['next'] = null; head = first; } traverseList(index){ dynamic currentNode = head; int counter = 0; while(counter != index){ currentNode = currentNode['next']; counter++; } return currentNode; } @override String toString (){ return 'Head: ${head} Tail: $tail length: $length'; } } void main() { LinkedList linkedList = new LinkedList(10); linkedList.append(5); linkedList.prepend(6); linkedList.insert(1,4); linkedList.insert(20,90); print(linkedList); linkedList.prinlnt(7); // linkedList.remove(2); linkedList.reverse(); print(linkedList); linkedList.prinlnt(7); }
Editor Settings
Theme
Key bindings
Full width
Lines