单向链表逆转

1. 复制到数组中然后进行数组倒序插入成新链表;

2. 申请一片新内存, 依次复制,比较浪费内存。  

3.定义3个指针, 依次修改。

这里写第三种:

struct Node{
  int data;
  Node *next;
};
Node* Reverse3(Node *pHead){
  Node *pPrev;
  Node *PNext;
  pPrev = NULL;
  pNext = NULL;
  while(pHead){
    pNext = pHead->next;
    pHead->next = pPrev;
    pPrev = pHead;
    pHead = pNext;
  }
  return pPrev;
}

//原理是 三个指针分别指向前三个元素, 改变第一个和第二个指向,然后依次后推
原文地址:https://www.cnblogs.com/hustcpp/p/9841915.html