学习笔记第十七天

1.链表

1.1链表尾插

复制代码
void push_back(struct Node *pHead,int n)//尾插
{
    if(isEmpty(pHead))
    {
        push_front(pHead,n);
    }
    else
    {
        struct Node *p = pHead->next; 
        while(p->next !=NULL)
        {
            p= p->next;
        }
        struct Node *pNew = malloc(sizeof(struct Node));
        p->next=pNew;
        pNew->next = NULL;
        pNew->a= n;
    }
}

2.链表头删

复制代码
void pop_front(struct Node *pHead)//头删
{
    if(!isEmpty(pHead))
    {
        struct Node *p = pHead->next;
        pHead->next = p->next;
        free(p);
    }
}

3.链表尾删

复制代码
void pop_back(struct Node *pHead)//尾删
{
    if(size(pHead)>=2)
    {
        struct Node *p = pHead->next; 
        while(p->next->next !=NULL)
        {
            p= p->next;
        }
        free(p->next);
        p->next=NULL;
    }
    else
    {
        pop_front(pHead);
    }
}

4.链表clear

复制代码
void clear(struct Node *pHead)
{
    while(!isEmpty(pHead))
    {
        pop_front(pHead);
    }
}

2.共用体(Union)

定义:共用体是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型。但

是,在任何给定时间,只有共用体中的一个成员是有效的。这是因为所有成员共享同一块内存空

间。

语法:

union 共用体名称

{

数据类型1 成员1;

数据类型2 成员2;

...

};

共用体(Union)的特点

内存共享:共用体的所有成员共享同一块内存空间。这意味着在同一时刻,共用体中只能存储一个成员的值,其他成员的值将被覆盖。

节省空间:由于共用体的成员共享内存。

类型灵活:共用体允许在相同的内存位置存储不同类型的数据,从而提供了数据类型的灵活性。

大小由最大成员决定:共用体的大小由其成员中占用内存最大的成员决定,以确保能够存储任何成员的值。

地址相同:共用体变量的地址和它的各成员的地址都是同一地址。

3. 枚举类型(Enum)

定义:枚举类型是一种用户定义的类型,它包含一组命名的整数常量。枚举类型使代码更加

清晰易读法:

enum 枚举类型名称

{

枚举值1,

枚举值2,

...

};

默认情况下,枚举值从0开始,依次递增。但也可以手动指定值。

枚举(Enum)的特点

有限集合:枚举类型的变量只能取该枚举类型中定义的值,这限制了变量的取值范围.

自动赋值:在定义枚举时,如果没有显式地为枚举项指定值,编译器会自动为它们赋值,通

常是从0开始递增的整数。

方便使用:在switch语句中使用枚举类型可以使代码更加简洁明了。此外,枚举类型还可以用

于函数参数、返回值等场合。

常量性质:枚举类型的元素在定义后被视为常量,不能修改其值。这有助于防止在程序中意外地更改枚举项的值.

4. typedef

定义:typedef用于为现有的数据类型定义一个新的名称(别名)。这有助于简化复杂类型声

明的书写,使代码更加清晰。

语法:

typedef 现有类型 新类型名称;

示例:

复制代码
typedef struct 
{
    char name[50];
    int age;
    float height;
} Person;

Person person1 = {"Alice", 30, 5.5};
printf("Name: %s\n", person1.name);

5.位运算

相关推荐
05候补工程师6 小时前
【408考研复习】数据结构核心笔记:字符串模式匹配与内部排序算法全解析
数据结构·经验分享·笔记·考研·算法·排序算法
问心无愧05136 小时前
ctf show web入门107
android·前端·笔记·android studio
一尘之中6 小时前
基于架构的软件开发方法
学习·架构·ai写作
chase。6 小时前
【学习笔记】面向机器人食物舀取的 spillage-aware 引导扩散策略
笔记·学习·机器人
zhonghaoxincekj6 小时前
基于 168MHz MCU 的直流继电器全参数自动化测试方案解析
经验分享·功能测试·科技·学习·测试工具·创业创新·制造
必胜刻6 小时前
Go项目实战:使用Ollama本地部署大模型实现AI智能笔记生成
人工智能·笔记·ai·语言模型·golang
爱睡懒觉的焦糖玛奇朵6 小时前
【从视频到数据集:焦糖玛奇朵的魔法工具Dataset Cleaner】
人工智能·python·学习·算法·yolo·音视频
星恒随风6 小时前
C++ 内存管理详解:从内存分区、malloc/free 到 new/delete
开发语言·c++·笔记·学习
江屿风6 小时前
C++图论基础拓扑排序经典OJ题流食般投喂
开发语言·c++·笔记·算法·图论
知识分享小能手6 小时前
Hadoop学习教程,从入门到精通, Hadoop 3.x 高可用集群 — 知识点详解(6)
大数据·hadoop·学习