【数据结构梳理06】链表的转置

将整个链表全转置的算法:

template<typename T>
class Chain{ //链表的类定义
public:
  
  //公共成员函数
  
  void Reverse();
  
private:
  class ChainNode{  //链表结点定义,嵌套类
    public:
    ChainNode* link;
    T data;
  }
  ChainNode* first;
}

void Chain<T>::Reverse(){
  ChainNode<T>* cur=first;
  ChainNode<T>* pr=nullptr;
  while(cur){
    ChainNode<T>* r=pr;
    pr=cur;
    cur=cur->link;
    pr->link=r;
  }
  first=pr;
}

图解:

性能分析:

需要遍历整个链表一遍,时间复杂度为O(n)。

posted @ 2021-12-08 16:12  天涯海角寻天涯  阅读(258)  评论(0)    收藏  举报