本周主要学习了结构体,位段,联合体和单链表的创建(头插法,尾插法,任意位置插入);

结构体声明:

括号里为成员列表

括号外为变量列表

typedef:

重命名,方便后面引用。

结构体内存对齐:

需要注意的:

对齐数=编译器默认的一个对齐数与该成员大小的较小值;

结构体总大小为成员列表中最大对齐数的整数倍;

结构体镶套:镶套的结构体对齐到自己最大对齐数的整数倍;同时整个结构体的大小是所有最大对齐数的整数倍;

位段:

位段的内存分配是按照类型的比特位创建一个内存块,按照冒号后的数字(比特位)来填充,如果填不下就在开创一个新空间接着填

位段的优点是能节省空间,但同时也存在很多不确定因素。

枚举:

枚举如果不给里面的成员赋值,默认从第一位开始为0自增下去;

联合体:

命名和结构体相似;

同时上面的了联合体大小为4字节;

联合体所占的空间不仅取决于最宽成员,还跟所有成员有关系,即其大小必须满足两个条件:

 (1)大小足够容纳最宽的成员;

 (2)大小能被其包含的所有基本数据类型的大小所整除。

联合体的所占空间为成员列表中最大对齐数的整数倍;

需要注意的如果成员列表中存在数组,比如char a[5];此时这个成员的对齐数为1不为5(对齐数是类型大小);

链表:

链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,有一系列结点(地址)组成,结点可动态的生成。

NULL可以用来标记最后一个块;

尾插法的代码:

//尾插法
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
    int data;
    struct node* next;
}node;
node* head = NULL;
int count = 0;
void print()
{
    node* temp = head;
    printf("你的链表是:");
    while (temp!= NULL)
    {
        printf("%d", temp->data);
        temp = temp->next;
    }
    printf("\n");
}

void insert(int num)
{
    count++;
    node* temp = (node*)malloc(sizeof(node));
    temp->data = num;
    temp->next = NULL;
    if (count == 1)
    {
        head = temp;
    }
    node* temp1 = head;
    while (temp1->next!= NULL)
    {
        temp1 = temp1->next;
    }
    if (count != 1)
    {
        temp1->next = temp;
    }
}
int main()
{
    int num = 0;
    while (1)
    {
        printf("请输入你要插入的数字(输入0终止):");

if (num == 0)
        {
            break;
        }
        scanf_s("%d", &num);
        insert(num);
        print();
    }
}

头插法:

//头插法
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
    int data;
    struct node* next;
}node;
node* head=NULL;

void print(int x)
{
    struct node* temp = head;
    printf("链表是:");
    while (temp != NULL)
    {
        printf("%d", temp->data);
        temp = temp->next;
    }
    printf("\n");
}

void insert(int x)
{
    struct node* temp = (struct node*)malloc(sizeof(struct node));
    temp->data = x;
    temp->next = head;
    head = temp;
}
int main()
{
    int x = 0;
    while(1)
    {
        printf("请输入链表中的数字(输入0终止):");
        scanf_s("%d", &x);
        if (x == 0)
        {
            return 0;
        }
        insert(x);
        print(x);
    }
}

任意位置插入:

//任一位置插入

//任一位置插入
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
    int data;
    struct node* next;
}node;
node* head = NULL;

void print()
 {
     node* temp = head;
     printf("你的链表是:");
     while (temp != NULL)
     {
         printf("%d", temp->data);
         temp = temp->next;
     }
     printf("\n");
 }

void insert(int num, int pos)
 {
     node* temp1 = (node*)malloc(sizeof(node));//申请的内存块的地址的活全部交给temp1;
     temp1->data = num;
     if (pos == 1)
     {
         temp1->next = head;
         head = temp1;
         return;
     }
     node* temp2 = head;
     for (int i = 0; i < pos - 2; i++)
     {
         temp2 = temp2->next;
     }
     temp1->next = temp2->next;
     temp2->next = temp1;
 }

int main()
{
    int num = 0;
    int pos = 0;
    int count = 0;
    while(1)
    {
        printf("请输入你想插入的数和插入的位置(第一个数默认插入1号位,输入0 0则终止):");
        scanf_s("%d %d", &num, &pos);
        if (num == 0 && pos == 0)
        {
            return 0;
        }
        if (count == 0 && pos != 1)
        {
            pos = 1;
            count++;
        }
        insert(num, pos);
        print();
    }

}

2022年11月14日-202211月20日学习周报相关推荐

  1. 五连阳回调买入法_5日均线和20日均线波浪买入法

    一般谨慎的买股方法,都是k线在20均线上方,游走在20日均线下方一般不主张炒,道氏理论告诉我们20日线是大浪,5日线是中浪,日K线是小浪,可以做这样一个比喻,k线就如同船只一样,漂泊在20线大浪之上, ...

  2. 4月14日~15日,2021慕尼黑上海电子展,我等你来!

    关注+星标公众号,不错过精彩内容 转自 | 达尔闻说 4月14日~15日,2021慕尼黑上海电子展,有小伙伴要去吗?(我要去,但我不告诉你) 3分钟快速了解得捷时刻,片尾有惊喜 4月14与4月15日, ...

  3. 6C++11/C++14/C++17-王桂林-专题视频课程

    <6>C++11/C++14/C++17-409人已学习 课程介绍         C++11是新时代的C++亦称为modern C++,是对C++98扩展.C++11旨在手写简便与提高效 ...

  4. 使用Python对股票数据进行数据分析(一)-计算日线行情、5日均线、10日均线行情并显示

    使用Python对股票数据进行数据分析(一)-计算日线行情.5日均线.10日均线行情并显示 各种炒股软件上可以显示各种技术指标,可以帮助投资者进行技术分析.这些股市中的这些指标都是怎么计算出来的呢?这 ...

  5. 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示

    使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情.5日均线.10日均线行情并显示 这个文章其实和我的上一篇文章,https://blog.csdn.net/lost0910 ...

  6. 超级计算机预报威海雨雪,形势突然调整,山东后天20日雨雪范围扩大,霜冻线也即将回归...

    今天是1月18日,大家周一好,明明带您一起来了解山东地区的天气发展情况.昨天周日全省都迎来了大晴天,虽然之前有冷空气的影响,但昨天的最高气温逆境中有所上升,昨天白天半岛地区最高气温在0至5℃之间,其他 ...

  7. 第14届蓝桥杯STEMA测评真题剖析-2022年11月27日Scratch编程初中级组

    [导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第117讲. 蓝桥杯选拔赛现已更名为STEMA,即ST ...

  8. 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours

    吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...

  9. 分享Silverlight/WPF/Windows Phone一周学习导读(11月14日-11月20日)

    分享Silverlight/WPF/Windows Phone一周学习导读(11月14日-11月20日) 本周Silverlight学习资源更新 Silverlight App.xaml用途 Jaso ...

最新文章

  1. JavaScript箭头函数(Arrow Function)
  2. SilverLight简介和优点
  3. LeetCode——Backtracking
  4. 安装linux桌面总结
  5. 昨天是欧洲男人的,今天却属于亚洲女人
  6. 论文投稿新规则,不用跑出SOTA,还能“内定”发论文?!
  7. Java使用独立数据库连接池(DBCP为例)
  8. 将GPS获得的UTC时间转换成本地时间的方法(转)
  9. Vue v-on v-model 组合使用
  10. 什么是 iPhone 和 Mac 上的“优化电池充电”功能?
  11. Atitit 软件的俩大要点 提升可读性 提升扩展性 目录 1. 命名可读性 1 2. 提升扩展性法 1 3. 项目常见扩展法 2 1.结构可读性 表驱动代替if else 减少层次 Dsl
  12. 使用python+Pyqt5来写一个简易串口调试助手
  13. 证件照尺寸像素规格,证件照尺寸怎么修改
  14. Android显示——一帧的渲染过程(VSYNC)
  15. Torvalds的linux
  16. java杨辉三角奇数_杨辉三角中的奇数与偶数
  17. 网站建设需要网站服务器吗
  18. Android开源项目 个性化控件(View)
  19. 智能体温检测系统解决方案
  20. 关于SQL反勾号或者叫飘号(``)

热门文章

  1. 科技英语翻译计算机化考试,《信息科技英语翻译》期末考试 A卷参考答案.doc
  2. java服务器下载jpg等静态资源方法
  3. cydia服务器未响应,为什么cydia打开卡死 如何解决
  4. 计算机语言mid是什么意思,MID是什么
  5. 前HP大中华区总裁孙振耀退休感言
  6. 计算机一级考试全部内容讲解,全国计算机等级考试一级教程讲解.doc
  7. 原生js实现(别踩白块小游戏)
  8. ActiveMQ RabbitMQ RokcetMQ消息中间件技术,三大消息中间件详细教程
  9. 什么因素引起了肾结石呢?
  10. 运算放大器的交流放大分析