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