算法导论 练习题 10.2-8
2017-04-24 20:02
337 查看
这题很无聊……
根据异或的性质:如果np = pre XOR next 则 pre = np XOR next,next = np XOR pre (大家可以随便用两个数字例子计算一下)
所以链表只要维护两个端点指针:head和tail,则每个节点地址都可以依顺序计算出来。
比如设第二个元素名称为e2,地址为addr2,addr2=head.np XOR 0 = head.np
第三个元素e3,地址是addr3,addr3=e2.np XOR &head
等等等等
记得,还可以从tail开始遍历,因为tail.np XOR 0就是tail.pre
所以,实现该表逆转,只要把head和tail交换一下就行了……
根据异或的性质:如果np = pre XOR next 则 pre = np XOR next,next = np XOR pre (大家可以随便用两个数字例子计算一下)
所以链表只要维护两个端点指针:head和tail,则每个节点地址都可以依顺序计算出来。
比如设第二个元素名称为e2,地址为addr2,addr2=head.np XOR 0 = head.np
第三个元素e3,地址是addr3,addr3=e2.np XOR &head
等等等等
记得,还可以从tail开始遍历,因为tail.np XOR 0就是tail.pre
所以,实现该表逆转,只要把head和tail交换一下就行了……
相关文章推荐
- 算法导论 练习题 10.2-7
- 算法导论 练习题 4.1-4
- 算法导论 练习题 5.3-5
- 算法导论 练习题 6.1-7
- 算法导论 练习题 6.5-6
- 算法导论 练习题 7.2-5
- 算法导论 练习题 9.1-1
- 算法导论 练习题 9.3-6
- 算法导论 练习题 13.4-6
- 算法导论 练习题 14.1-3
- 算法导论 练习题 15.4-3
- 算法导论第15章练习题 15.4-5
- 算法导论第16章练习题 16.1-4
- 算法导论 练习题 20.2-2
- 算法导论10.2-7:单链表的逆转
- 算法导论 练习题 2.3-2
- 算法导论 练习题 3.2-1
- 算法导论 练习题 4.3-8
- 算法导论 练习题 5.1-1
- 算法导论 练习题 5.3-6