c++ - Simpler approach to "reversing a doubly linked list" does not work for some reason -


i aware "reversing doubly linked list" has been asked , answered before, e.g.: reversing doubly linked list question little different.

all methods find online use "current node (curr)" iterator , swapping on follows:

node* reverse(node* head) {     node* curr=head;     while(curr)     {         swap(curr->next, curr->prev);         head=curr;          curr=curr->prev;     }     return head; } 

where node of type:

struct node {   int data;   node *next;   node *prev }  

now question is, tried simplify code omitting curr iterator since looks totally unnecessary me. here new code:

node* reverse(node* head) {     while(head)     {         swap(head->next, head->prev);          if(head->prev) head=head->prev;     }     return head; } 

this works on paper when test in online compiler time limit exceeded error: http://www.mycodeschool.com/problems/reverse-a-doubly-linked-list

i believe can make swapping on head node , iterate prev node.

do see logical problems code?

node* reverse(node* head) {     while(head)     {         swap(head->next, head->prev);          if(head->prev) head=head->prev;         else break;  // !!!     }     return head; } 

Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -