单向链表反转算法

struct Node
{
  int n;
  Node* pNext;

}

 

void Reverse(Node* n, Node* pre, Node* p)

{

  if(n->pNext!=NULL)

  {

    Reverse(n->pNext, n, p);

  }

  else if(n->pNext==NULL)

  {

    p = n;

  }

  n->pNext = pre;

}

 

void Reverse2(Node* head)
{
  Node* pe = head;
  Node* ps = head->next;
  while (ps)
  {
    pe->next = ps->next;
    ps->next = head;
    head = ps;
    ps = pe->next;
  }
}

void Test()

{

  Node* p = NULL;

  ......

  Node* pNew = NULL;  //逆向后结果
  Reverse(p, NULL, pnew);

  Reverse2(p);

}

 

posted @ 2016-03-30 10:31  其实我是一个演员  阅读(210)  评论(0)    收藏  举报