• 小发现


    这个简单的问题没想到我现在才弄清了,不过弄清了就好,一天进步一点点!

    我通过代码来说明:

    int a = 1;

    int b = a;

    a = 3;

    printf("b is %d",b);

    这个运行的结果b is 1,因为b 赋值的时候a = 1.就算后续a再变化b也是当时的值。

    接下来就可以运用到链表的删除上来了。书上有两个版本,但我没有看懂第一个版本为什么有问题,若有大佬帮我回答,在下不胜感激!

    第一个版本:

    void  DeleteList1  (List L)

    {

      List  p = L->next;

      L->next = NULL;//这里虽然L这个链表后续为NULL,但对p链表没有影响。

      while (p != NULL) {
        free(p);

        p = p->next;

      }

    }

    void Delete2 (List L)
    {
      List p,temp;

      p = L->next;

      L->next = NULL;

      while (p ! = NULL) {
        temp = p->next;

        free(p);

        p = temp;

      }

    }

    我好像也隐隐约约感受到了,是不是因为free(p)的原因,导致p后面的片段丢失,p = p->next就会为NULL(这只是我的猜想),等我查查资料了再做回答吧,我先去写栈的基本操作了,写完了就可以玩了,毕竟今天还是国庆节的假期中,哈哈,得抓紧时间玩,不然上课了就又有事情忙了,期待下一次的博客!

  • 相关阅读:
    SpringMVC初识视图解析器
    初识SpringMVC
    C++ 虚函数表
    C++ 纯虚函数 + 抽象类
    C++ 虚析构函数
    C++ 虚函数
    C++ 多态
    leetcode
    leetcode
    leetcode 10.正则表达式匹配
  • 原文地址:https://www.cnblogs.com/ranyang/p/13777523.html
Copyright © 2020-2023  润新知