还有没有更简洁的代码实现单链表反转了?
这个题目在面试中曾经也做过了不下5次了吧,第一次写出如下的代码大概是在2010时一次某知名外企的面试中。知名外企很看重写代码的习惯,精益求精也达到了比较苛刻的地步,所以面试官对我这个代码还是比较满意吧!这个算法很简单,说起来大家算法大致思想都一样,但是各自实现起来却都五花八门的!就我现在能搜到的实现中不少while循环前啊后啊的都有很多比较判断什么的!
希望有人能指出下面代码可能存在的错误。
更希望有人提出更简洁的代码实现。
1 template<typename T> 2 struct Node 3 { 4 T e; 5 Node<T>* pNext; 6 }; 7 8 template<typename T> 9 Node<T>* ReverseSList(Node<T>* pHead) 10 { 11 Node<T>* pNewHead = NULL; 12 while (pHead) 13 { 14 Node<T>* pNext = pHead->pNext; 15 pHead->pNext = pNewHead; 16 pNewHead = pHead; 17 pHead = pNext; 18 } 19 return pNewHead; 20 } 21 22 void test() 23 { 24 Node<int> * phead = NULL; 25 ReverseSList<int>(phead); 26 }

浙公网安备 33010602011771号