Do you have a null node as the root? If you do then this avoids having to take care of the fencepost problem.
I'll assume you don't, that you are just looking @ each node:
Look @ the first node: if it's greater than the new number then just insert at the beginning of the list.
Otherwise go through the list until you find the end of the list or the next number is greater than the new number.
Here is some pseudocode:
if(new < node){
insertInFront;
}else{
while(!endOfList && new > node){
++node;
}
if(endOfList){
insertAfter node
}else{
node.previouse = new
new.next = node
}
Here is an example of inserting 40 into your list:
(40 < 15) = false
--> enter loop, increment node
(40 < 25) = false
incrementNode
(40 < 33) = false
incrementNode
(40 < 45) = true
insert
45.previous = 33
33 -> 40
40 -> 45
New list looks like this:
15 <-> 25 <-> 33 <-> 40 <-> 45
Here is the first fencepost: insert 8:
(8 < 15) = true
insert @ front:
8 <-> 15 ...
(notice you CANNOT do what you did before because there is no previous node that 15 pointed to, but if you had a null node then this would have not been different):
2nd fencepost: insert 60
60 < 15 = false
incrementNode
60 < 25 = false
incrementNode
60 < 33 = false
incrementNode
60 < 45 = false
end of list reached, insert @ end
... 33 <-> 45 <-> 60
Again, unless 45 points to a sentinel node, this cannot be handled "normally".