OneCompiler

DSA

181

// Name: om kamble
// Roll No. : 2201081

//1. Write a program to demonstrate singly linked list with following operations Create, Insert, Delete, Display, Reverse

class LinkedList {
constructor() {
this.list = null;
}

create(element) {
if (!this.list) {
this.list = new newNode(element);
} else {
let temp = this.list;
while (temp.next != null)
//finding address of last node
temp = temp.next;
temp.next = new newNode(element); //append newnode to list
}
}
insert(element, pos) {
var node = new newNode(element);
if (pos == 1) {
node.next = this.list;
this.list = node;
} else {
var temp = this.list;
var i = 2;
while (i != pos && temp.next != null) {
//finding position
temp = temp.next;
i = i + 1;
}
node.next = temp.next;
temp.next = node;
}
}

del(element) {
let temp = this.list;
let prev = null;

while (temp.data != element && temp.next != null) {
  //finding node to be deleted
  prev = temp;
  temp = temp.next;
}
if (temp.data == element) {
  if (temp != null) {
    if (prev != null)
      //It's not first node
      prev.next = temp.next;
  } else this.list = this.list.next; //First node
  temp = null;
} else console.log("Element not present.");

}
reverse() {
var forward = this.list;
var curr = null;
var back = null;
while (forward) {
back = curr;
curr = forward;
forward = forward.next;
curr.next = back;
}
this.list = curr;
}

display() {
var temp = this.list;
while (temp != null) {
console.log(temp.data);
temp = temp.next;
}
}
}

class newNode {
constructor(data, next) {
this.data = data;
this.next = null;
}
}

const list = new LinkedList();
list.create(1);
list.create(2);
list.create(3);
console.log("List Created.");
list.display();
list.insert(10);
list.insert(30);
list.insert(40);
console.log("Insert:");
list.display();
console.log("Delete:");
list.del(10);
list.del(3);
list.display();
list.reverse();
console.log("Reverse:");
list.display();