这个是数据结构单链表计数,为什么把len++放到后面不影响计数结果

img


为什么这里把len++计数部分写后面不影响结果呢?是程序错误还是这么写也可以?

cnt++再while循环中,在L= L->next;的前面和后面都是一样的,循环体的执行由while条件控制。不管是在前面还是后面,执行的次数都是一样的,所以对结果没有影响。
跟下面的代码是一样的:

int Length_List(LNodeList L)
{
    LNodeList p = L->next;
    int cnt = 0;
    while (p != NULL)
    {
        cnt++; //放在p=p->next后面也是可以的
        p = p->next;
    }
    return cnt;
}

你说的是cnt++吗,只要在while循环里哪个位置都是一样的,每一次循环都会执行

len++在哪?
如果是cnt++的话,只要有一个节点不是NULL,那么在循环体中就加1,循环体中任何位置都一样,和L = L->next的位置无关

img


cnt++吗?
如果是它的话,确实放前放后都不影响计数,因为放前面cnt++会等下面语句执行之后,才会执行++操作;而放后面是先执行语句,再执行++操作。其实计数量是一样的。

希望对题主有所帮助,可以的话,帮忙点个采纳!