Data Structures: Create a Doubly Linked List
This commit is contained in:
		
							parent
							
								
									d0006d7064
								
							
						
					
					
						commit
						44f36ee920
					
				
							
								
								
									
										47
									
								
								Data Structures/doublyLinkedList.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Data Structures/doublyLinkedList.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					// https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/create-a-doubly-linked-list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var Node = function (data, prev) {
 | 
				
			||||||
 | 
					  this.data = data;
 | 
				
			||||||
 | 
					  this.prev = prev;
 | 
				
			||||||
 | 
					  this.next = null;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var DoublyLinkedList = function () {
 | 
				
			||||||
 | 
					  this.head = null;
 | 
				
			||||||
 | 
					  this.tail = null;
 | 
				
			||||||
 | 
					  // Only change code below this line
 | 
				
			||||||
 | 
					  this.add = (element) => {
 | 
				
			||||||
 | 
					    const node = new Node(element, this.tail);
 | 
				
			||||||
 | 
					    if (this.head === null) {
 | 
				
			||||||
 | 
					      this.head = node;
 | 
				
			||||||
 | 
					      this.tail = node;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      this.tail.next = node;
 | 
				
			||||||
 | 
					      this.tail = node;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  this.remove = (element) => {
 | 
				
			||||||
 | 
					    let prevNode = null;
 | 
				
			||||||
 | 
					    let currentNode = this.head;
 | 
				
			||||||
 | 
					    while (currentNode !== null && currentNode.data !== element) {
 | 
				
			||||||
 | 
					      prevNode = currentNode;
 | 
				
			||||||
 | 
					      currentNode = currentNode.next;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (currentNode === null || currentNode.data !== element) {
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (prevNode === null) {
 | 
				
			||||||
 | 
					      this.head = currentNode.next;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      prevNode.next = currentNode.next;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (currentNode.next === null) {
 | 
				
			||||||
 | 
					      this.tail = prevNode;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      const nextNode = currentNode.next;
 | 
				
			||||||
 | 
					      nextNode.prev = prevNode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return currentNode.element;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  // Only change code above this line
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user