2022年11月14日-202211月20日学习周报
本周主要学习了结构体,位段,联合体和单链表的创建(头插法,尾插法,任意位置插入);
结构体声明:
括号里为成员列表
括号外为变量列表
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日学习周报相关推荐
- 五连阳回调买入法_5日均线和20日均线波浪买入法
一般谨慎的买股方法,都是k线在20均线上方,游走在20日均线下方一般不主张炒,道氏理论告诉我们20日线是大浪,5日线是中浪,日K线是小浪,可以做这样一个比喻,k线就如同船只一样,漂泊在20线大浪之上, ...
- 4月14日~15日,2021慕尼黑上海电子展,我等你来!
关注+星标公众号,不错过精彩内容 转自 | 达尔闻说 4月14日~15日,2021慕尼黑上海电子展,有小伙伴要去吗?(我要去,但我不告诉你) 3分钟快速了解得捷时刻,片尾有惊喜 4月14与4月15日, ...
- 6C++11/C++14/C++17-王桂林-专题视频课程
<6>C++11/C++14/C++17-409人已学习 课程介绍 C++11是新时代的C++亦称为modern C++,是对C++98扩展.C++11旨在手写简便与提高效 ...
- 使用Python对股票数据进行数据分析(一)-计算日线行情、5日均线、10日均线行情并显示
使用Python对股票数据进行数据分析(一)-计算日线行情.5日均线.10日均线行情并显示 各种炒股软件上可以显示各种技术指标,可以帮助投资者进行技术分析.这些股市中的这些指标都是怎么计算出来的呢?这 ...
- 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示
使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情.5日均线.10日均线行情并显示 这个文章其实和我的上一篇文章,https://blog.csdn.net/lost0910 ...
- 超级计算机预报威海雨雪,形势突然调整,山东后天20日雨雪范围扩大,霜冻线也即将回归...
今天是1月18日,大家周一好,明明带您一起来了解山东地区的天气发展情况.昨天周日全省都迎来了大晴天,虽然之前有冷空气的影响,但昨天的最高气温逆境中有所上升,昨天白天半岛地区最高气温在0至5℃之间,其他 ...
- 第14届蓝桥杯STEMA测评真题剖析-2022年11月27日Scratch编程初中级组
[导读]:超平老师的<Scratch蓝桥杯真题解析100讲>已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第117讲. 蓝桥杯选拔赛现已更名为STEMA,即ST ...
- 吴恩达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 ...
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月14日-11月20日)
分享Silverlight/WPF/Windows Phone一周学习导读(11月14日-11月20日) 本周Silverlight学习资源更新 Silverlight App.xaml用途 Jaso ...
最新文章
- JavaScript箭头函数(Arrow Function)
- SilverLight简介和优点
- LeetCode——Backtracking
- 安装linux桌面总结
- 昨天是欧洲男人的,今天却属于亚洲女人
- 论文投稿新规则,不用跑出SOTA,还能“内定”发论文?!
- Java使用独立数据库连接池(DBCP为例)
- 将GPS获得的UTC时间转换成本地时间的方法(转)
- Vue v-on v-model 组合使用
- 什么是 iPhone 和 Mac 上的“优化电池充电”功能?
- Atitit 软件的俩大要点 提升可读性 提升扩展性 目录 1. 命名可读性	1 2. 提升扩展性法	1 3. 项目常见扩展法	2 1.结构可读性 表驱动代替if else 减少层次 Dsl
- 使用python+Pyqt5来写一个简易串口调试助手
- 证件照尺寸像素规格,证件照尺寸怎么修改
- Android显示——一帧的渲染过程(VSYNC)
- Torvalds的linux
- java杨辉三角奇数_杨辉三角中的奇数与偶数
- 网站建设需要网站服务器吗
- Android开源项目 个性化控件(View)
- 智能体温检测系统解决方案
- 关于SQL反勾号或者叫飘号(``)