单链表的逆序

来源:互联网 发布:防网络诈骗知识 编辑:程序博客网 时间:2024/06/06 16:36

单链表的逆序问题。

(1)遍历迭代,逐个翻转。

template<class T>void List<T>::Inverse(){    if (first == nullptr)        return;    LinkNode<T> *p, *prev, *latter;    p = first->link;    prev = nullptr;    latter = p->link;    while (p != nullptr)    {        p->link = prev;        prev = p;        p = latter;        if (p != nullptr)            latter = p->link;    }    first->link = prev;}
Node * ReverseList(Node *head)  {      Node *p1,*p2,*p3;      if(head==NULL||*head==NULL)          return head;      p1 = head;      p2 = p1->next;      while(p2)             //注意条件      {          p3=p2->next;       //要改变p2->next的指针,所以必须先保留p2->next                   p2->next=p1;          p1=p2;            //循环往后          p2=p3;      }      head->next=NULL;   //原先的head已经变成tail,别忘了置空,只有到这步才能置空      *head=p1;      return head;  }  
原创粉丝点击