//-- 函数定义 --
// 该函数用递归实现的
ls * creat(int n)
{
ls * pl = NULL;
// A处
if(n-- > 0)
// 判断是否还要分配的节点
{
pl = (ls *)malloc(sizeof(ls));
// 分配节点内存
pl->Gong_Hao = MAX - n;
// 工号 = MAX - n;
第一次即 工号 = 5 - 4; 等于1
key(pl);
// 键入工资存入pl
pl->next = creat(n);
// 递归调用;分配下一个节点内存,并且当前节点的下一个节点(pl->next)等于下一个节点的地址
}
return pl;
// 函数的返回值,在A处pl值初始化为NULL,为了 if(n-- >0) 为假时返回NULL
// if(n-- > 0) 说明已经创建了足够的节点
}
// 递归函数我也不解释了,简单的说就是函数调用其自身
// 递归看书吧
// 我练练递归的
// 递归程序不易读
// 递归的函数比较“漂亮”、代码紧凑
// key 函数其实可以作为函数的参数传递给creat
// 这个程序的员工编号我很偷懒,用了一个减法得到,这样写出来的函数重用性不强。
// 工号赋值放在key函数中更好,且key作为creat的参数传递
[[it] 本帖最后由 cosdos 于 2008-9-5 18:06 编辑 [/it]]