3.11编写查找单链表某元素的程序,分别用递归和非递归方法实现,并比较运行时间。链表达到多大才会令递归程序崩溃?
递归压栈会浪费大量额外空间与时间,因此非递归程序会比递归程序运行时间短。
链表长度约5000时递归查找即崩溃,而迭代可在1000000长度的链表下正确运行。
//非递归方法实现
Position Find_nonrecursion(Elmenttype x,List L)
{
Position p;
p=First(L);
while(p!=NULL&&p->Elmentment!=x)
p=p->next;
return p;
}