LinkedList in real time
A LinkedList is basically a data structure which contains information which are linked with each other.
From programmer point of view - A Linkedlist contains multiple values and every value contains a data and reference to next value.
Linkedlist can be used to implement queue or stack basically linear storage.
In this article- i am going to create a storage wrapper which will use linkedList to store data & perform some functionalities -
We will be doing -
- Storing value in sorted order
- printing stored value
- Checking if value exist
Let’s Code
First we will write program to store value in linked list -
class Storage {
constructor() {
this.root = null;
} getNewNode(data) {
return {
data: data,
next: null
}
} add(data) {
const node = this.getNewNode(data);
let root = this.root;
if (root == null) {
this.root = node;
} else {
while (root.next != null) {
root = root.next;
}
root.next = node;
}
} printAll(){
let root = this.root;
while(root!=null){
console.log(root.data);
root = root.next;
}
}
}const myStorage = new Storage();
myStorage.add(5);
myStorage.add(51);
myStorage.add(15);myStorage.printAll();
The above code only store the data but not in ordered way. Let’s see how we can store the data in ordered way.
Store in ordered way
class Storage{
constructor(){
this.root=null;
}
getNewNode(value){
return {
data:value,
next:null
}
} compareAndstoreInSortedOrder(newNode, root){
const value = newNode.data;
if(root.data>value){
const next = root.next;
newNode.data = root.data;
root.data = value;
root.next = newNode;
newNode.next = next;
}
}
add(value){
let root = this.root;
let newNode = this.getNewNode(value);
if(root==null){
this.root = newNode;
}
else if(root.next==null && root.data> newNode.data){
this.compareAndstoreInSortedOrder(newNode,root);
}
else{
while(root.next!=null){
console.log("root", root.data, value);
this.compareAndstoreInSortedOrder(newNode,root);
root = root.next;
}
root.next = newNode;
}
} printAll(){
let root = this.root;
while(root!=null){
console.log(root.data);
root = root.next;
}
}
}
const store = new Storage();
store.add(5);
store.add(3);
store.add(10);store.printAll();
Check if value exist
class Storage{
constructor(){
this.root=null;
}
getNewNode(value){
return {
data:value,
next:null
}
} compareAndstoreInSortedOrder(newNode, root){
const value = newNode.data;
if(root.data>value){
const next = root.next;
newNode.data = root.data;
root.data = value;
root.next = newNode;
newNode.next = next;
}
}
add(value){
let root = this.root;
let newNode = this.getNewNode(value);
if(root==null){
this.root = newNode;
}
else if(root.next==null && root.data> newNode.data){
this.compareAndstoreInSortedOrder(newNode,root);
}
else{
while(root.next!=null){
console.log("root", root.data, value);
this.compareAndstoreInSortedOrder(newNode,root);
root = root.next;
}
root.next = newNode;
}
} printAll(){
let root = this.root;
while(root!=null){
console.log(root.data);
root = root.next;
}
} isExist(value){
let root = this.root;
do{
if(root.data===value){
return true;
}
root = root.next;
}while(root!=null); return false;
}
}const store = new Storage();
store.add(5);
store.add(3);
store.add(10);store.isExist(3) // true
store.isExist(9) // false