而且问题也很好描述,一句话就表达出了自己的题。
------------------------------------------------------------------------------------------------------
一、算法思想:(头插法)
<1>,将源链表分为链表头和链表实体。
<2>,将链表实体节点用头插法依次插入到链表头中。
<3>,如果链表实体插完则算法结束,否则转到<2>.
------------------------------------------------------------------------------------------------------
二、算法的实现:
void reverse(struct node*head)
{
if (head== NULL)
return ;
struct node *p = head->next,*pnext= NULL;
head->next= NULL;
while (p !=NULL) {
pnext = p->next;
p->next= head->next;
head->next= p;
p = pnext;
}
return ;
}
----------------------------------------------------------------------------------------------------------
三、算法实现前后都要在心中进行单元测试。
case 1:假如传入的指针为NULL时程序是否会崩溃。
case 2:假如传入的链表只有一个节点则程序是否会出错。
case 3:任意传入的链表是否会逆置。
在编码前心中如果就有了这些测试用例,估计你编写代码的时候就会减少出现的问题。
编码完后,然后再使用这些测试用例来检验你的函数是否正确。
很多时候面试官检验你的代码写的正确与否,就是用的早已准备好的测试用例来建议的
如果你事先就用测试用例验证了,那就可以保证万无一失了。