the core is prev pointer is storing the current
while(current){
next = current.next
current.next = prev
prev = current
current = next
}
let discuss the part
[0,1,2,3,4]
**prev = null
current = {data:0,next:1}
next = null**
saving current.next in next (later use)
current = {data:0,next:1}
current.next contains {data:1,next:2}
current.next = prev {null}
now current modified {data:0,next:1} to {data:0,next:null}
prev = current so prev is null to {data:0,next:null}
current = next // now next stores the {data:1,next:2}
// next iteration
current = {data:1,next:2}
next = current.next {data:2,next:3}
current.next = prev {data:0,next:null}
now current has {data:1,next:{data:0,next:null}}
prev = current
//{data:0,next:null} to {data:1,next:{data:0,next:null}}
current = next {data:2,next:3}
//third iteration
current = {data:2,next:3}
next = current.next {data:3,next:4}
current.next = prev {data:1,next:{data:0,next:null}}
current has {data:2,next:{data:1,next:{data:0,next:null}}
prev = current
{data:1,next:{data:0,next:null}} to {data:2,next:{data:1,next:{data:0,next:null}}
current = next
{data:3,next:4}
//fourth iteration
current = {data:3,next:4}
next = current.next {data:4,next:null}
current.next = prev {data:2,next:{data:1,next:{data:0,next:null}}
current has {data:3,next:{data:2,next:{data:1,next:{data:0,next:null}}}
prev = current
{data:2,next:{data:1,next:{data:0,next:null}} to {data:3,next:{data:2,next:{data:1,next:{data:0,next:null}}}
current = next
{data:4,next:null}
//last iteration
current = {data:4,next:null}
next = current.next {null}
current.next = prev {data:3,next:{data:2,next:{data:1,next:{data:0,next:null}}}
current become {data:4,next:{data:3,next:{data:2,next:{data:1,next:{data:0,next:null}}}}
prev = current
current = next
completed
happy great coding
Top comments (0)