我们假设单向链表的节点如下:
template<typename T>
class list_node
{
public:
list_node* next;
T da
};
void reverse(node*& head)
{
if ( (head==
0)|| (head->next==0)
)return;// 边界检测
node* pNext=0;
node* pPrev=
head;// 保存链表头节点
node* pCur=
head->next;// 获取当前节点
while (pCur!=
0)
{
pNext= pCur->next;//
将下一个节点保存下来
pCur->next=
pPrev;// 将当前节点的下一节点置为前节点
pPrev= pCur;//
将当前节点保存为前一节点
pCur= pNext;//
将当前节点置为下一节点
}
}
这是一般的方法,总之就是用了几个临时变量,然后遍历整个链表,将当前节点的下一节点置为前节点。