这个题目在面试中曾经也做过了不下5次了吧,第一次写出如下的代码大概是在2010时一次某知名外企的面试中。知名外企很看重写代码的习惯,精益求精也达到了比较苛刻的地步,所以面试官对我这个代码还是比较满意吧!这个算法很简单,说起来大家算法大致思想都一样,但是各自实现起来却都五花八门的!就我现在能搜到的实现中不少while循环前啊后啊的都有很多比较判断什么的!
希望有人能指出下面代码可能存在的错误。
更希望有人提出更简洁的代码实现。
template<typename T>
struct Node
{
T e;
Node<T>* pNext;
};
template<typename T>
Node<T>* ReverseSList(Node<T>* pHead)
{
Node<T>* pNewHead = NULL;
while (pHead)
{
Node<T>* pNext = pHead->pNext;
pHead->pNext = pNewHead;
pNewHead = pHead;
pHead = pNext;
}
return pNewHead;
}