嵌入式学习 Day16

一. 共用体

形式:

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

注意:
1.共用体 
  初始化 --- 只能给一个值,默认是给到第一个成员变量的
2.共用体成员变量
  共用体用的数据最终存储的 --- 应该是最后一次给到的值。
  但是只能影响到 自己数据类型对应的空间中的数据
3.可以判断大小端 
4.实际用途 
  a.节省空间 
  b.进行数据转换 

5.共用体的大小  --是成员变量中最大的那个成员的大小

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


    二. 枚举


概念:

如果一个变量只有几种可能的值,则可以定义为枚举类型。所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
  
  eg:
   //从键盘输入1~7  
   打印出对应的英文的星期 

形式:

enum  枚举类型名 
{
    sun,  //名字 --- 代表一个值 --- 符号常量 
    mon,
    tue,
    wed,
    thu,
    fri,
    sat
};

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

练习: 
   无人机的状态 
   
   0 --flying 
   1 --stop
   2 --holding 
   
  从键盘输入0~2 打印无人机的状态 

嵌入式学习 Day16_第1张图片


三. 链表


数据结构:
   数据的组织形式 (逻辑上理解的形式) ---会决定使用数据的算法

数组:    //顺序表 


   优点:
     随机访问 方便 
   缺点:
     增加数据 不方便 
     删除数据 不方便 
     
    
链表:    //链式的数据表 


 优点:
    增加 删除数据很方便 
 缺点:
    访问数据不大方便 

计算机中:
   计算机如何体现链式数据结构

嵌入式学习 Day16_第2张图片

节点:
struct Node
{
  int a;                         //数据域 
  struct Node *next;     //指针域       
};                            //一个节点 

1.头节点 ---- 数据域值随机

2.首节点 ---- 第一个保存有效数据的节点

3.尾节点 ---- 链表的最后一个有效节点NULL

  

空链表:


 特点:
  只有头节点,并且头节点的指针域 为NULL      //相当于是尾节点

strcut Node head = {0,NULL};                      

尾插 
 

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

嵌入式学习 Day16_第3张图片

嵌入式学习 Day16_第4张图片

头插 
    
   void pushFront(struc Node *head,int data)
   {
      //1.创建新节点
      New 
      //2.链接 
      New->next = p->next;
      p->next = New;
   }

嵌入式学习 Day16_第5张图片

你可能感兴趣的:(学习)