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

结构体注意事项:

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.mzph.cn/news/661573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Notion 开源替代品:兼容 Miro 绘图 | 开源日报 No.162

toeverything/AFFiNE Stars: 25.6k License: NOASSERTION AFFiNE 是下一代知识库,将规划、排序和创建集于一身。它是一个注重隐私、开源、可定制且即插即用的替代方案,可以与 Notion 和 Miro 相媲美。主要功能和优势包括: 超融合&#xff1…

轻松使用python将PDF转换为图片(成功)

使用PyMuPDF(fitz)将PDF转换为图片 在处理PDF文件时,我们经常需要将PDF页面转换为图片格式,以便于在网页、文档或应用程序中显示。Python提供了多种方式来实现这一需求,本文将介绍如何使用PyMuPDF(也称为f…

本地部署GeoServe服务并结合内网穿透实现任意浏览器远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

Python代码重构库之rope使用详解

概要 Python是一门强大的编程语言,但在大型项目中,维护和重构代码可能会变得复杂和困难。为了提高开发人员的效率和准确性,有许多工具可用于辅助代码重构和智能代码补全。其中之一是Python Rope。 Python Rope是一个用于Python编程语言的强大工具,它提供了丰富的功能,包…

绕过过滤注释符的sql注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、MySQL 注释符 注释符的作用 代码说明:注释用于对代码段进行说明,帮助开发和维护人员理解代码的功能和目的。注释内容在执行时会被数据库引擎忽略,不会影响实际的SQL执行。…

git pull的时候报错

错误信息:You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge. 原因:上一次pull的代码有冲突自动合并失败,在下一次pull之前你没有很好的解决这个冲突 方法: 1&#x…

【RT-DETR有效改进】利用YOLO-MS的MSBlock模块改进ResNet中的Bottleneck(RT-DETR深度改进)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于替换我们ResNet中Basic组合出一种新的结构,来替换我们网络中的…

Spring Boot 整合 Redis 使用教程

作为开发者,相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库,是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」。 Redis 以超…

在ROS(Robot Operating System)中常用的ROS功能包

ROS(Robot Operating System)拥有大量的功能包,这些功能包提供了从底层硬件控制到高级算法处理的多种功能。以下是一些常用的ROS功能包: 1. roscpp 和 rospy: - roscpp 是ROS的C客户端库,它提供了用于编…

网络通信--术语对照表

术语对照表 OSI 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组…

PyTorch复现网络模型VGG

VGG 原论文地址:https://arxiv.org/abs/1409.1556VGG是Visual Geometry Group(视觉几何组)的缩写,它是一个在计算机视觉领域中非常有影响力的研究团队,主要隶属于牛津大学的工程系和科学系。VGG以其对卷积神经网络&am…

Ubuntu(22.04):解决升级后在VirtualBox中的启动非常慢的问题

Ubuntu22.04是通过VirtualBox的虚机安装的,最近升级了Ubuntu22.04后,每次启动都非常的慢 $ systemd-analyze blame 5min 2.287s plymouth-quit-wait.service 5min 18ms vboxadd.service 可以看到是这两个服务启动的非常耗时,各用了5分钟多。 …

Vue3_基础使用

vue2的选项式与vue3的组合式区别: 选项式:vue2中数据与方法计算属性等等,针对一个数据的处理在不同的配置中,当业务复杂时很难维护,修改起来也不好查找。 vue3的组合式:将针对数据的方法计算属性等等放在一…

计算岛屿的数量-算法题(字节笔试题,做出来了,也被撸了)

题目 有一个二维数组,其中每个元素要么是1或者0,1表示土地,连起来的1表示一个岛屿,0表示海,请计算出来二维数组用有多少个岛屿 比如: {{1, 1, 1, 0, 1},{0, 1, 0, 1, 0},{1, 0, 1, 1, 1},{1, 1, 0, 1, 0…

opencv学习 机器学习

Kmeans double cv::kmeans(InputArray dataint k InputOutputArray bestLabels //输出的所有样本的标签数组TermCriteria criteriaint attempts //采样不同初始化标签的尝试次数int flag // 中心点初始化方法,支持KMEANS_RANDOM_CENTERS//KMEANS_PP_CENTERS//KMEA…

FPGA高端项目:Xilinx Zynq7020系列FPGA 多路视频缩放拼接 工程解决方案 提供4套工程源码+技术支持

目录 1、前言版本更新说明给读者的一封信FPGA就业高端项目培训计划免责声明 2、相关方案推荐我这里已有的FPGA图像缩放方案我已有的FPGA视频拼接叠加融合方案本方案的Xilinx Kintex7系列FPGA上的ov5640版本本方案的Xilinx Kintex7系列FPGA上的HDMI版本本方案的Xilinx Artix7系列…

【SVN在Linux下的常用指令】

windows下的TortoiseSVN是资源管理器的一个插件,以覆盖图标表示文件状态,几乎所以命令都有图形界面支持,比较好用,这里就不多说。主要说说linux下svn的使用,因为linux下大部分的操作都是通过命令行来进行,所…

深度解读 BigANN 2023 四大赛题,向量搜索还有更好的解决方案?

近年来,向量搜索大赛 BigANN 一直是行业关注的焦点。原因在于,BigANN 不仅是在向量搜索领域具有强大影响力的比赛,开发者在赛后贡献出的相关解决方案更是行业进步与发展的重要动力。 向量检索大赛 BigANN 旨在提升大规模 ANN 的研究创新和生产…

Django如何调用机器学习模型进行预测

Django是一个流行的Python Web框架,它可以很方便地集成机器学习模型,进行预测和推理。我将介绍如何在Django项目中调用训练好的机器学习模型,并实现一个预测接口。 准备工作 首先我们需要一个训练好的机器学习模型。这里我们使用Scikit-Learn训练一个简单的线性回归模型作为示…

Django模型(八)

一、修改数据 先获取对象,通过对象属性更新数据,再保存 (更新单一数据)通过QuerySet的update函数更新数据 (更新多条数据) #单条记录修改 save c = Cook.objects.get(pk=1) c.name = 安妮 c.save()# 更新多个值 update Cook.objects.filter(sect=粤菜).update(level=5)1.1、…