我有点困惑,因为我的一位朋友说不可能。因为它是完全对称的。
我已经用Google搜索了一下,但我仍然感到困惑
答案 0 :(得分:2)
是;只需交换previous
和next
指针,以及任何head
和tail
指针。您能解释一下您的朋友如何声称该列表是对称的吗?
答案 1 :(得分:2)
这并非不可能,可能需要格外小心地设计算法,但是在大多数(所有)算法中,您都必须迭代和修改数据结构。
您可以简单地交换head
和tail
,然后遍历链接列表,并将next
和previous
引用交换为每个 节点。您还需要确保在一个完整的迭代之后停止这样做。
Python中的示例算法如下:
class CircularDoubleLinkedList:
# ...
def reverse(self):
self.head, self.tail = self.tail, self.head
start = cur = self.head
if cur is not None:
cur.next, cur.previous = cur.previous, cur.next
cur = cur.previous
while cur is not None and cur is not start:
cur.next, cur.previous = cur.previous, cur.next
cur = cur.previous # move to the next node
答案 2 :(得分:2)