一. 共用体
形式:
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 打印无人机的状态
三. 链表
数据结构:
数据的组织形式 (逻辑上理解的形式) ---会决定使用数据的算法
数组: //顺序表
优点:
随机访问 方便
缺点:
增加数据 不方便
删除数据 不方便
链表: //链式的数据表
优点:
增加 删除数据很方便
缺点:
访问数据不大方便
计算机中:
计算机如何体现链式数据结构节点:
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)
{
//统计有效节点的个数
}头插
void pushFront(struc Node *head,int data)
{
//1.创建新节点
New
//2.链接
New->next = p->next;
p->next = New;
}