单向链表逆转
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; }
//原理是 三个指针分别指向前三个元素, 改变第一个和第二个指向,然后依次后推