写一个递归算法来计算并返回链表的长度。

大学 递归,算法,长度 已帮助 人

写一个递归算法来计算并返回链表的长度。

热搜:下列关于线性链表的叙述中,正确的是()。

答案解析

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