Answer:PROCEDURE INSERT_CD(T, KEY, POS)
[Where pointer ‘T’ is a pointer which can be either pointing to first in or lasting element and key is the value after or before u want to insert new node and pos is a variable which is giving direction ‘right’ or ‘left’ of key value.]
1. [Checking the value of pointer and traversing the destination]
if (T==HEAD)
while (DATA(T) != KEY)
T <-- RIGHT (T)
else
while (DATA(T) != KEY)
T <-- LEFT (T).
2. [Inserting an element to the right of the destination]
if (POS == ‘R’)
if (T == P)
Call GETNODE (S)
DATA (S) <-- ‘xyz’
RIGHT (P) <-- S
LEFT (S) <-- P
RIGHT (S) <-- HEAD
LEFT (HEAD) <-- S
P <-- S
else
Call GETNODE (S)
DATA (S) <-- ‘xyz’
RIGHT (S) <-- RIGHT (T)
LEFT (S) <-- T
RIGHT (T) <-- S
LEFT (RIGHT(S)) <-- S
P <-- S.
3. [Inserting an element to the left side of destination]
else if (T == HEAD)
Call GETNODE (S)
DATA (S) <-- ‘xyz’
RIGHT (S) <-- HEAD
LEFT (HEAD) <-- S
LEFT (S) <-- P
RIGHT (P) <-- S
HEAD <-- S
else
Call GETNODE (S)
DATA (S) <-- ‘xyz’
RIGHT (S) <-- T
LEFT (S) <-- LEFT (T)
LEFT (T) <-- S
RIGHT (LEFT(S)) <-- S.
4. [FINISH]
return.