当前位置: 首页 > news >正文

共用体与枚举法,链表的学习

结构体注意事项:

1.结构体类型可以定义在main函数里面,但是此时的作用域就被限定在该函数中
2.结构体的的的定义的形式:a.先定义类型,后定义变量-----struct stu s
   b.定义类型的同时,定义了变量:struct stu {......}s;
   c.省略了结构体名字(只用一次的时候可以这样写):struct    {.....}s;


一,共用体

union  共用体名
{
        成员列表;
};

目的:节省空间。所有自定义的数据共用一块空间,大小由最大的那个类型所占的字节决定。

注意:1.共用体的初始化只能给一个值,默认给到第一个变量
           2.共用体成员变量辅助:共用体用的数据最终存储的 --- 应该是最后一次给到的值。
  但是只能影响到 自己数据类型对应的空间中的数据。
           3.共用体类型可以是函数参数,也可以是返回值的类型:共用体,结构体类型定义出来之后   a.定义变量 ; b.定义数组 ; c.定义指针  ;  d.做函数参数,返回值类型 

           4.可以判断大小端

           5.共用体的大小  --是成员变量中最大的那个成员的大小
           6.实际用途  a.节省空间   b.进行数据转换


二,枚举

概念:如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

eg:若从键盘输入1~7代表星期的英文名称
        enum weekday
      {
              sun,         ------ 写的是名字()
              mon,
              wed,
              thu,
              fri,
              sat,
      };

注意: 1.枚举提高了代码的可读性
            2.枚举的本质是int型,与整型兼容
            3.枚举的不足:本质上是个整型类型,所以枚举的类型并不能真正限制在指定的范围内
            4.枚举类型 可以做函数 形参 和 返回值 , 定义数组也可以,本质上就是整型数据


三,链表 

数据结构:数据的组织形式(逻辑上理解的形式)
eg:数组---连续性,有序性,单一性 
优点:有下标就能随机访问任意元素,便捷性
缺点:拓展数据不方便,删除数据也不方便

数据的组织形式 -- - -- 会决定使用数据的算法

链表是链式的数据表
优点:增加 删除数据很方便
缺点:找数据不大方便

计算机中如何体现链式结构数据:
存放链式数据的结构:节点   【数据 |  另外一个节点的指针】
eg:[数据1|指针]   [数据2指针]    [数据3|指针]

操作:
1.创建一个链表     ---    空链表 //有头链表  --可以更方便的处理链表 //无头链表 
      空链表的特点:只有头节点,并且头节点的指针域 为NULL //相当于是尾节点

2.插入

尾插:思路:
    s1.创建一个新的节点
       struct Node *pNew = malloc(sizeof(struct Node)); 
       //放在了堆区 
       //
     s2.找到尾节点 
       struct Node *p = &head;  //此时p在头节点 
       while( p->next != NULL )
       {
          p = p->next; //让p指向下一个节点 
       }
     s3.链接到尾节点后面
      p->next  = pNew;    
      pNew->next = NULL; //尾节点 

代码实现:

头插: 思路:

int length(struct Node *head)
   {
      //统计有效节点的个数 
   }
   
    //头插 
    
   void pushFront(struc Node *head,int data)
   {
      //1.创建新节点
      pNew 
      //2.链接 
      pNew->next = p->next;
      p->next = pNew;
   }

代码实现:

链表的插入本质(自我总结):
尾部插入:指针指到唯一可以得到的头节点,拿到指针域的地址,得到下一个链表存放的位置,重复不断地找链表成员,然后找到next为NULL的尾节点为止。然后将next为NULL的换成新链表的地址,将新链表的next改为   NULL。
头部插入:新节点的next要先和首节点连接也就是头节点next存放的地址,此时在把新节点的地址给到头节点中。此时新节点又做为了首节点。

http://www.lryc.cn/news/292423.html

相关文章:

  • SG2520CAA汽车用晶体振荡器
  • 使用pip将第三方依赖包下载到本地指定位置
  • C语言探索:水仙花数的奥秘与计算
  • 2024年人工智能应用与先进制造科学国际学术会议(ICAIAAMS 2024)
  • 计算机图形学 实验
  • React + react-device-detect 实现设备特定的渲染
  • 文献速递:肿瘤分割----基于卷积神经网络的系统,用于前列腺癌[68Ga]Ga-PSMA PET全身图像的全自动分割
  • 2024 IC FPGA 岗位 校招面试记录
  • Linux 命令 —— top
  • 【Docker】使用VS创建、运行、打包、部署.net core 6.0 webapi
  • 抖音短视频矩阵营销系统源头独立开发搭建
  • Springboot使用数据库连接池druid
  • Springboot-前后端分离——第三篇(三层架构与控制反转(IOC)-依赖注入(DI)的学习)
  • Open CASCADE学习|曲面上一点的曲率及切平面
  • CentOS 8最小安装和网络配置
  • 【代码随想录-链表】环形链表 II
  • Redis核心技术与实战【学习笔记】 - 7.Redis GEO类型 - 面向 LBS 应用的数据类型
  • 银行数据仓库体系实践(17)--数据应用之营销分析
  • Linux一键部署telegraf 实现Grafana Linux 图形展示
  • C/C++ C++入门
  • 【后端】乐观锁和悲观锁
  • 软件工程知识梳理1-可行性研究
  • 2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码
  • pytorch nearest upsample整数型tensor
  • MySQL的SQL MODE
  • GO EASY 框架 之 NET 05
  • 【教程】谈一谈 IPA 上传到 App Store Connect 的几种方法
  • 面试经典 150 题 -- 滑动窗口 (总结)
  • JDK8对List对象根据属性排序
  • 【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!