继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【备战春招】第6天-C01结构体及相关

taoy
关注TA
已关注
手记 94
粉丝 9
获赞 1
  • 课程名称:Linux C语言结构体
  • 课程链接:https://www.imooc.com/learn/409
  • 章节名称:
    • 第5章:动态数据结构
      • 5-1 静态链表
      • 5-2 动态链表
  • 讲师姓名:雷过就跑
  • 时间:2023-02-12 23:30

课程内容

  • 静态链表

    • 链表都需要一个头指针变量

    • 这个头指针变量是必须的,如果只知道指向链表中间一个的地址,那么从这个地址向前的内容都将无法访问,只能从这个指针向后查找

    • 也就是在上面情况中,头指针就是指向当前链表中的一个内存

    • 把链表中每个元素都叫做链表的结点

    • 链表要包括两个部分

      • 用户所需要的数据
      • 下一个结点的地址
    • 使用循环来访问静态链表中数据(代码优化)

      • for (struct weapon *p = head; p != NULL; p = p->next) {
            printf("Price: %d, ATK: %d\n", p->price, p->atk);
        }
        
      • 使用for循环可以比while循环节省行数

  • 动态链表

    • 所谓动态链表是指在程序运行过程中从无到有建立链表的过程,以下为源码:

    • struct Student {
          char *name;
          int code;
          int english;
          double math;
          struct Student *next;
      }//定义结构体
      int main()
      {
          Student *head, *new, *newer;
          head = new = newer = (Student *)malloc(sizeof(Student));
          std::cin >> head->name >> head->code >> head->english >> head->math;
          while (0 != newer->code) {
              new->next = newer;
              new = newer;
              newser = (Student *)malloc(sizeof(Student));
              std::cin >> newer->name >> newer->code >> newer->english >> newer->math;
          }
          new->next = NULL;
      }
      // 代码进行了优化,循环体内不再需要使用判断语句
      
    • 动态链表,是把链表中的数据在运动过程中不断添加,并且根据指定值是不理满足条件来决定是否要停止循环

学习心得

结构体指针理解起来还有一点费劲
图片描述
图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP