学习日志以及个人总结 (16)

news2025/2/4 17:57:15

共用体

共用体
union 共用体名
{
成员列表;
};//表示定义一个共用体类型


注意:
1.共用体
 初始化 --- 只能给一个值,默认是给到第一个成员变量
2.共用体成员变量辅助
3.可以判断大小端 ----※!!
  实际用途 :节省空间
             进行数据转换
 
 比如:
 struct stu
 {
    char name[20];
    int sno;
    float score;
 };
 struct teacher
 {
    char name[20];
    int Tno;
    float salary;
 };       
 ----------------------
 
 struct member
 {
    char name[20];
    int no;
    
    union
    {
        float score;
        float salary;
    }d;
    
 };

 4.共用体变量作为函数参数,也可以是函数返回值类型
 
    共用体结构体类型定义出来之后
    a.定义变量
    b.定义数组
    c.定义指针
    d.做函数参数,返回值类型

共用体判断大小端

  1 #include<stdio.h>
  2 
  3 union demo
  4 {
  5     int a;
  6     char b;
  7     short c;
  8 };
  9 
 10 int isEnddian(vodi)
 11 {
 12     union demo
 13     {
 14         int a;
 15         char b;
 16     }d;
 17 
 18     d.a=1;
 19     return d.b;                                                                                                                                                                                         
 20 }
 21 int main(void)
 22 {
 23     union demo d={'a'};
 24 
 25     d.a=0x12345678;
 26     d.b='a';
 27     d.c=0x99;
 28     printf("a=%#x\n",d.a);
 29     printf("b=%c:%#hhx\n",d.b,d.b);
 30     printf("a=%#x\n",d.c);
 31 }

枚举

枚举:一枚一枚的列举 

enum //枚举   实际上是一种数组类型(int)
enum 枚举类型名
{
    
};

提高代码可读性。本质:int类型 所以枚举和整型类型兼容

不足 :因为枚举类型--本质上是一个整型类型
所以枚举类型变量的值 并不能真正限定在 指定的那些值范围中。
 

例题无人机

 1 #include<stdio.h>
  2 enum nopeopleFly
  3 {
  4     flying,
  5     stop,
  6     holding
  7 };
  8                                                                                                                                                                                                         
  9 int main(void)
 10 {
 11     enum nopeopleFly n;
 12     int a ;
 13     scanf("%d",&a);
 14     n=a;
 15     switch(n)
 16     {
 17         case 0:
 18     printf("flying\n");
 19         break;
 20         case 1:
 21     printf("stop\n");
 22         break;
 23         case 2:
 24     printf("holding\n");
 25         break;
 26     }
 27 
 28     return 0;
 29 }

链表

链表:链式的数据表
 
 狗链! //寻找数据
 
优点:增加 删除数据较为方便
缺点:找数据不方便
 
存放链式数据的结构
节点[数据|另外一个节点指针] 
 
 [数据域|指针域]
 
 节点:
 struct Node
 {
//数据域
    struct stu s;
//指针域
    struct Node *next;
 };
 
 数据结构对应算法 --- 操作
 
 增加数据就是增加节点
 删除数据就是减少节点
 
 操作:
 1,创建一个链表---空链表
 //有头链表 ---更方便处理链表
 //无头链表  
 
 c语言阶段:
 有头 单向链表
 
 空链表的特点为:只有头节点 并且头节点指针域为NULL //即相当于尾节点
 
 2.插入
    创建一个新的节点
    将节点链接起来


    实现链表操作


void pushBack(struct Node *head)
{    //尾插
    S1:创建一个新的节点
    struct     Node *pNew = malloc(sizeof(struct Node));
                                    栈上
    S2:找尾节点
    struct Node *p =&head;//此时p在头节点
    p = p->next;
    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;
    }

 1 #include<stdio.h>                                                                                                                                                                                       
  2 #include<stdlib.h>
  3 struct Node
  4 {
  5     int data;
  6     struct Node *next;
  7 };
  8 
  9 void pushBack(struct Node *head,int data)
 10 {  //创建新节点
 11     struct Node *pNew = malloc(sizeof(struct Node));//放在堆区
 12     pNew->data =data;
 13     //链接
 14     struct Node *p =head;//此时p在头节点
 15 
 16     while(p->next != NULL)
 17     {
 18         p = p->next;//让p指向下一个节点
 19     }
 20     p->next = pNew;
 21 
 22     pNew->next = NULL;
 23 }
 24 
 25 int isEmpty(struct Node *head)
 26 {
 27     if(head->next == NULL)   //判断是否是空链表
 28     {
 29         return 1;
 30     }else
 31     {
 32         return 0;
 33     }
 34 }
 35 
 36 void printLinklist(struct Node *head)
 37 {
 38     struct Node *p =head;
 39     if(isEmpty(head) == 0)
 40     {
 41         p=head->next;
 42         while(p != NULL)
 43         {
 44             printf("%d\n",p->data);
 45             p=p->next;
 46         }
 47     }
 48 }
 49 
 50 int lengh(struct Node *head)
 51 {
 52     struct Node *p=head->next;
 53     int c=0;
 54     while(p!=NULL)
 55     {
 56         c++;
 57         p=p->next;
 58     }
 59     return c;
 60 }
 61 
 62 void pushFront(struct Node *head,int data)
 63 {
 64     struct Node *pNew = malloc(sizeof(struct Node));
 65     pNew->data = data;
 66 
 67     struct Node *p=head;
 68     pNew->next = head->next;
 69     p->next = pNew;
 70 
 71 }
 72 
 73 int main(void)
 74 {
 75     struct Node head;
 76     head.next = NULL;//空链表
 77     pushBack(&head,1); // 将一个新元素加到 head后面 
 78     pushBack(&head,2);
 79     pushBack(&head,3);
 80     pushBack(&head,4);
 81     pushBack(&head,5);
 82     printf("lengh = %d\n",lengh(&head));
 83     printLinklist(&head);
 84     return 0;
 85 }                                            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1427201.html

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

相关文章

Flask框架开发学习笔记《5》简易服务器代码

Flask框架开发学习笔记《5》 Flask是使用python的后端&#xff0c;由于小程序需要后端开发&#xff0c;遂学习一下后端开发。 简易服务器代码 接口解析那一块很关键&#xff0c;学后端服务器这一块&#xff0c;感觉主要就是学习相应地址的接口怎么处理。 然后写清楚每个地址…

第96讲:MySQL高可用集群MHA的核心概念以及集群搭建

文章目录 1.MHA高可用数据库集群的核心概念1.1.主从复制架构的演变1.2.MHA简介以及架构1.3.MHA的软件结构1.4.MHA Manager组件的启动过程1.5.MHA高可用集群的原理 2.搭建MHA高可用数据库集群2.1.环境架构简介2.2.搭建基于GTID的主从复制集群2.2.1.在三台服务器中分别搭建MySQL实…

C#验证字符串是正整数还是负整数,正则表达式vs用Char.IsDigit 方法遍历字符数组

目录 一、使用的方法 1.正则表达式 2.Char.IsDigit 方法 二、源码 1.源代码 2.生成效果 一、使用的方法 1.正则表达式 使用正则表达式Regex类的IsMatch方法&#xff0c;可以有效地判断用户输入的信息是否为有符号整数。 用于判断字符串是否有符号整数的正则表达式…

Maya------显示隐藏提取复制刺破面

alth<--->ctrlshifth 补洞后刺破面&#xff0c;防止多边面的产生&#xff01;

【C/C++ 09】万年历

一、题目 输入一个年份&#xff0c;以日历的格式打印这一年的所有天数&#xff0c;需要正确的表示每一天是周几。 二、算法 以公元1年1月1日作为万年历的起始日期&#xff0c;公元1年1月1日是周一&#xff0c;所以算法的核心就是就算某一天距离起始日期的天数差&#xff0c;然…

Android14之Selinux报错:unknown type qemu_device at token (一百八十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

17.STL 库(C++)plus

STL 库&#xff08;C&#xff09; 文章目录 STL 库&#xff08;C&#xff09;1.迭代器1.1 概述和分类1.2案例 2.C 的 string 类型2.1string 概述2.2 string 构造函数2.3 string 赋值操作2.4string存取字符串操作2.5string拼接操作2.6 string 查找和替换2.7string 比较操作2.8st…

AJAX-axios错误处理

场景&#xff1a; 处理&#xff1a;用更直观的方式&#xff0c;给普通用户展示错误信息 语法&#xff1a;在then方法的后面&#xff0c;通过点语法调用catch方法&#xff0c;传入回调函数并定义形参 axios({//请求选项}).then(result> {//处理数据}).catch(error>{//处理…

Qt 范例阅读: QStateMachine状态机框架 和 SCXML 引擎简单记录(方便后续有需求能想到这两个东西)

一、QStateMachine 简单应用&#xff1a; 实现按钮的文本切换 QStateMachine machine; //定义状态机&#xff08;头文件定义&#xff09;QState *off new QState(); //添加off 状态off->assignProperty(ui->pushButton_2, "text", "Off"); //绑定该…

2023_12蓝桥杯STEMA 考试 Scratch 中级试卷解析

2023蓝桥杯STEMA 考试 Scratch 中级试卷(12 月)解析 由于没有原始文件,这里使用的角色和背景和实际题目会有所差异,已经尽量还原原题,以下代码仅供参考。吐槽一句:蓝桥杯越来越变态了!\(`Δ’)/\(`Δ’)/\(`Δ’)/孩子学习速度永远也赶不上内卷的速度。 一、选择…

【axios报错异常】: Uncaught ReferenceError: axios is not defined

问题描述: 当前代码在vivo手机和小米手机运行是正常的,点击分享按钮调出相关弹框,发送接口进行分享,但是现在oppo手机出现了问题: 点击分享按钮没有反应. 问题解析: 安卓同事经过查询后,发现打印了错误: 但是不清楚这个问题是安卓端造成的还是前端造成的,大家都不清楚. 问题…

MySQL系列:系列结构和基础管理

文章目录 MySQL工作模型及实例MySQL 客户端/服务器工作模型&#xff08;C/S&#xff09;服务端&#xff1a;实例MySQLd的程序结构MySQL的逻辑结构MySQL的物理存储结构 MySQL基础管理用户管理权限管理连接管理初始化配置启动关闭多实例 MySQL工作模型及实例 MySQL 客户端/服务器…

【线上研讨会】PowerFLOW汽车空调噪声和风扇噪声解决方案

会议地址&#xff1a; 达索系统官方在线研讨会平台

2024美赛E题保姆级分析完整思路代码数据教学

2024美国大学生数学建模竞赛E题保姆级分析完整思路代码数据教学 E题&#xff1a;Sustainability of Property Insurance&#xff08;财产保险的可持续性&#xff09; 这道题目同样是比赛的热门题目&#xff0c;是很多同学在训练的时候经常做的题目类型了&#xff0c;属于大数据…

【Qt】—— Hello World程序的实现

目录 &#xff08;一&#xff09;使⽤"按钮"实现 1.1 纯代码方式实现 1.2 可视化操作实现 &#xff08;二&#xff09;使⽤"标签"实现 2.1 纯代码方式实现 2.2 可视化操作实现 &#xff08;一&#xff09;使⽤"按钮"实现 1.1 纯代码方式实…

python爬虫3

1.异常处理&#xff0c;使代码更加健壮 静态cookie可视绕过登录的限制 快代理是一个代理平台 # https://movie.douban.com/j/chart/top_list?type5&interval_id100%3A90&action& # start0&limit20# https://movie.douban.com/j/chart/top_list?type5&int…

Java_简单模拟实现ArrayList_学习ArrayList

文章目录 一、 了解线性表和顺序表区别1.线性表2.顺序表 二、模拟实现1.定义接口2.定义MyArrayList3.成员变量以及构造方法4.实现打印数组5.实现add方法6.实现查找某个数是否存在contains或者某个数的下标indexOf7.获取或更改pos位置的值 get和set8.获取数组大小 size9.删除某个…

C语言:文件操作详解

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、为什么我们需要使用文件 我们在写程序的时候&#xff0c;输入的数据是存储在电脑内存中的&#xff0c;如果程序退出内存回收&#xff0c;相应数据也就丢失了&#xff0c;等再次运行程序&#xff0c;就看不到…

【IMAX6U移植OpenCV】

IMAX6U移植OpenCV V1.3 一 安装通用交叉编译器1.1 下载通用交叉编译器1.2 安装通用交叉编译器1.3 验证通用交叉编译器 二 搭建 OpenCV 3.4.1 的编译环境2.1 下载 OpenCV 3.4.1 源码2.2 配置 OpenCV 环境2.3 编译 OpenCV 源码 三 Qt 项目中加入OpenCV3.1 Qt 项目的 pro 文件Open…

Redis单机-主从集群-哨兵集群-分片集群 搭建教程

Redis集群 本章是基于CentOS7下的Redis集群教程&#xff0c;包括&#xff1a; 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖&#xff1a; yum install -y gcc tclredis-6.2.4.tar.gz 然后将Redis安装包上传到虚拟机的任意目录&am…