void deleteNode (node* &head, node* &tail, int position) {
// delete first node
if (position == 1) {
node* temp = head;
temp -> next -> prev = NULL;
head = temp -> next;
temp -> next = NULL;
delete temp;
return;
}
node* curr = head;
node* back = NULL;
int cnt = 1;
while (cnt < position) {
back = curr;
curr = curr -> next;
cnt++;
}
//delete last node
if (curr -> next == NULL) {
tail = back;
back -> next = NULL;
curr -> prev = NULL;
delete curr;
return;
}
// delete in between node
back -> next = curr -> next;
curr -> next -> prev = back;
curr -> next = NULL;
curr -> prev = NULL;
delete curr;
}