Could someone please explain to me how this code works. I tried writing it out and wrapping my head around it, but I am still lost. 

When you are setting `next->prev = prev` what is the difference in value between `next->prev` and `prev`? aren't they the same value? same question for the next line as well. 

I tried writing out a `ListElement` struct to try to help understand but I am still confused. Any answer or help would be greatly appreciated, or any other references that can make me understand. I am a visual learner so if you happen to know a good visualization of this, I would appreciate it. 

```
int unlink(ListElement *element)
{
    ListElement *next = element->next;
    ListElement *prev = element->prev;

    next->prev = prev;
    prev->next = next;

    return 0;
}

```