【正确答案】(1)数据结构
采用不带头结点的单链表定义。
(2)算法
int length(LinkList llist){ /*计算单链表llist的长度*/
if(llist==NULL)
return 0;
return 1+length(llist->link);
}
(3)代价分析
该算法访问每个结点各一次,故时间代价为O(n)。
【答案解析】学会用递归的思想分析问题,编写递归函数在许多情况下可以使程序非常精练,而且可读性好。读者不难用一个循环来代替递归调用,实现同样的功能。试写出本题的非递归函数并且与递归函数比较,从中领会递归与非递归的联系。