Click to See Complete Forum and Search --> : Swapping 2 nodes in doubly linked list
wael.salman
June 22nd, 2009, 06:52 AM
Hi,
How to swapp 2 nodes in doubly linked list?? Is that means just swapping the values (becaus enode is just anode), or we have to swap also pointers??
In case of swapping pointers, how can we do that??
Thank you
wael
wael.salman
June 22nd, 2009, 06:58 AM
By the way ,
There are two main cases:
1) The two nodes to swap are next to each other,
2) The two nodes to swap are not next to each other
can we solve them in one solution or every situation should be solved alone??
Thank you
binyo66
June 29th, 2009, 03:39 PM
Hi,
How to swapp 2 nodes in doubly linked list?? Is that means just swapping the values (becaus enode is just anode), or we have to swap also pointers??
In case of swapping pointers, how can we do that??
Thank you
wael
I think it depends on how you want to implemented. But usually we just swapping the pointer without regard of the value of type of value and it is easier to implemented.
When you want to delete or swap in link-list style, I usually check only when it relates to root, middle and at end node.
prime1999
June 30th, 2009, 01:01 AM
The quick way would be just to remove both nodes, retrieving their pointers, and then insert them back in, the other way.
wael.salman
February 8th, 2010, 10:00 AM
I guess it is just swapping the node values and that is all. We do not have to swap pointers.
laserlight
February 8th, 2010, 10:20 AM
I guess it is just swapping the node values and that is all. We do not have to swap pointers.
Although that will work, if the node values are expensive to copy, then it would be cheaper to relink pointers as prime1999 described.
learnerabn
February 11th, 2010, 12:51 AM
By the way ,
There are two main cases:
1) The two nodes to swap are next to each other,
2) The two nodes to swap are not next to each other
can we solve them in one solution or every situation should be solved alone??
Thank you
we have to take two steps in common and two steps in specific for each case.
common steps:
1.right pointer of the first node to point where the right pointer of the second node currently pointing.
2.left pointer of the second node to point where the left pointer of the first node is currently pointing.
if the nodes r next to each other then
1.make left pointer of the first node to point the second node.
2.make right pointer of the second node to point the first node.
if the nodes r not next to each other then
1.make left pointer of the first node to point where the left pointer of the second node pointing currently.
2.make right pointer of the second node to point where the right pointer of the first node currently pointing.
codeguru.com
Copyright Internet.com Inc., All Rights Reserved.