翻转一个双向链表的时间复杂度是 $O(1)$

如题。

方法:

  1. 交换 head 指针和 tail 指针。

  2. 通过判断 head 所指向的元素的 prev 和 next 指针中哪一个不是 NULL 就可以判断出向后遍历是用 prev 指针还是 next 指针;
    还有一种实现方式:把 prev 和 next 指针存在一个长度为 2 的数组里,用 prev 和 next 表示对应的下标,这样只需交换 prev 和 next 即可。

猜你喜欢

转载自www.cnblogs.com/Patt/p/9460771.html
今日推荐