蒻姬★彡 2022-03-02 12:53 采纳率: 100%
浏览 24
已结题

这两个代码有什么区别呢


Node* find(LinkList L, ElementType x) {
    Node* m = L->next;
    while (m != NULL) {
        if (m->data == x) {
            return m;
        }
        m = m->next;
    }
}
Node* find(LinkList L, ElementType x){
    Node* p = L->next;;
    while (p != NULL && p->data != x){
        p = p->next;
    }
    return p;
}

  • 写回答

3条回答 默认 最新

  • 奔走的月光 2022-03-02 13:26
    关注

    下面那个结构更加紧凑,但两者意思是一样的。不论是m!=NULL还是p!=NULL,只有当m或p为链表的最后一个结点时,m或p才会等于NULL,所以在判断while循环是否继续执行下去的条件中加上这个,表明的是要遍历整条链表,除非遇到其它也能使while循环终结的条件。第一个是遍历这个链表,在这个过程中如果某个结点的数据域的值等于我们设定的值,那么返回这个结点,函数结束;第二个呢如果在遍历的过程中结点的数据域的值一直不等于我们设定的值,那么就一直往下走,而如果有这么一个结点的数据域确实储存着和我们设定的值相同的值,那么while循环就进行不下去了,而这个结点自然也是我们要的结点,返回这个结点后,函数结束。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月10日
  • 已采纳回答 3月2日
  • 创建了问题 3月2日