《编程之美》中的一个扩展问题:编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来。
// pHead为链表的头指针,链表的第一元素是pHead->next;
void inverse(Node *pHead) {
// 当前节点,初始为第一个元素
Node *pCurrent = pHead->next;
// 当前节点的前一节点
Node *pPrev = NULL;
// 当前节点的下一节点
Node *pNext = NULL;
while (pCurrent != NULL) {
pNext = pCurrent->next;
pCurrent->next = pPrev;
pPrev = pCurrent;
pCurrent = pNext;
}
pHead->next = pPrev;
}