From 10e76965439b285ca9495880d97632ef8d6eaa10 Mon Sep 17 00:00:00 2001 From: Christian Bender Date: Fri, 30 Mar 2018 17:58:13 +0200 Subject: [PATCH] wrote more object oriented --- Data Structures/Linked List/singlylinklist.js | 116 ++++++++++-------- 1 file changed, 65 insertions(+), 51 deletions(-) diff --git a/Data Structures/Linked List/singlylinklist.js b/Data Structures/Linked List/singlylinklist.js index be26d6074..7a8a30ae0 100644 --- a/Data Structures/Linked List/singlylinklist.js +++ b/Data Structures/Linked List/singlylinklist.js @@ -8,63 +8,72 @@ //Functions - add, remove, indexOf, elementAt, addAt, removeAt, view +// class LinkedList and constructor //Creates a LinkedList -function LinkedList(){ - //Length of linklist and head is null at start - var length = 0; - var head = null; +var LinkedList = (function () { + function LinkedList() { + //Length of linklist and head is null at start + this.length = 0; + this.head = null; + + } + + // class node (constructor) //Creating Node with element's value - var Node = function(element){ - this.element = element; - this.next = null; - }; + var Node = (function () { + function Node(element) { + this.element = element; + this.next = null; + } + return Node; + }()); //Returns length - this.size = function(){ - return length; + LinkedList.prototype.size = function () { + return this.length; }; //Returns the head - this.head = function(){ - return head; + LinkedList.prototype.head = function () { + return this.head; }; //Creates a node and adds it to linklist - this.add = function(element){ + LinkedList.prototype.add = function (element) { var node = new Node(element); //Check if its the first element - if(head === null){ - head = node; + if (this.head === null) { + this.head = node; } else { - var currentNode = head; + var currentNode = this.head; //Loop till there is node present in the list - while(currentNode.next){ - currentNode = currentNode.next; + while (currentNode.next) { + currentNode = currentNode.next; } //Adding node to the end of the list currentNode.next = node; } //Increment the length - length++; + this.length++; }; //Removes the node with the value as param - this.remove = function(element){ - var currentNode = head; + LinkedList.prototype.remove = function (element) { + var currentNode = this.head; var previousNode; //Check if the head node is the element to remove - if(currentNode.element === element){ - head = currentNode.next; + if (currentNode.element === element) { + this.head = currentNode.next; } else { //Check which node is the node to remove - while(currentNode.element !== element) { + while (currentNode.element !== element) { previousNode = currentNode; currentNode = currentNode.next; } @@ -74,25 +83,25 @@ function LinkedList(){ } //Decrementing the length - length--; + this.length--; }; //Return if the list is empty - this.isEmpty = function(){ - return length === 0; + LinkedList.prototype.isEmpty = function () { + return this.length === 0; }; //Returns the index of the element passed as param otherwise -1 - this.indexOf = function(element) { - var currentNode = head; + LinkedList.prototype.indexOf = function (element) { + var currentNode = this.head; var index = -1; - while(currentNode){ + while (currentNode) { index++; //Checking if the node is the element we are searching for - if(currentNode.element === element){ - return index+1; + if (currentNode.element === element) { + return index + 1; } currentNode = currentNode.next; } @@ -101,10 +110,10 @@ function LinkedList(){ }; //Returns the element at an index - this.elementAt = function(index){ - var currentNode = head; + LinkedList.prototype.elementAt = function (index) { + var currentNode = this.head; var count = 0; - while(count < index){ + while (count < index) { count++; currentNode = currentNode.next; } @@ -112,23 +121,23 @@ function LinkedList(){ }; //Adds the element at specified index - this.addAt = function(index, element){ + LinkedList.prototype.addAt = function (index, element) { index--; var node = new Node(element); - var currentNode = head; + var currentNode = this.head; var previousNode; var currentIndex = 0; //Check if index is out of bounds of list - if(index > length){ + if (index > this.length) { return false; } //Check if index is the start of list - if(index === 0){ + if (index === 0) { node.next = currentNode; - head = node; + this.head = node; } else { while (currentIndex < index) { @@ -143,24 +152,25 @@ function LinkedList(){ } //Incrementing the length - length++; + this.length++; + return true; }; //Removes the node at specified index - this.removeAt = function(index) { + LinkedList.prototype.removeAt = function (index) { index--; - var currentNode = head; + var currentNode = this.head; var previousNode; var currentIndex = 0; //Check if index is present in list - if(index < 0 || index >= length){ + if (index < 0 || index >= this.length) { return null; } //Check if element is the first element if (index === 0) { - head = currentNode.next; + this.head = currentNode.next; } else { while (currentIndex < index) { @@ -172,21 +182,25 @@ function LinkedList(){ } //Decrementing the length - length--; + this.length--; return currentNode.element; }; //Function to view the LinkedList - this.view = function () { - var currentNode = head; + LinkedList.prototype.view = function () { + var currentNode = this.head; var count = 0; - while(count < length){ + while (count < this.length) { count++; console.log(currentNode.element); currentNode = currentNode.next; } }; -}; + + // returns the constructor + return LinkedList; + +}()); //Implementation of LinkedList var linklist = new LinkedList(); @@ -197,7 +211,7 @@ linklist.add(12); linklist.add(17); console.log(linklist.size()); console.log(linklist.removeAt(4)); -linklist.addAt(4,15); +linklist.addAt(4, 15); console.log(linklist.indexOf(8)); console.log(linklist.size()); linklist.view();