既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
4.1;头插法;
//头插法创建链表; 接下来的节点都是直接插到head后面,其余之前创建的节点之前;因此会改变顺序;
//这里的s是没有变化的,始终指向的是刚创建的节点,达到头插法的目的;
//}
void creat2(struct node * s, int num)//用结构体指针指向head,达到通过s来创建链表;
{
if(num <= 0)
{
printf("输入的节点数不对\n");
exit(1);
}
struct node * p, *p1;
int i;
p = (struct node *)malloc(sizeof(struct node));//先创建第一个节点;并赋值;
if(p == NULL)
{
exit(1);
}
scanf("%d",&p->data);
p->next = NULL;//最后一个节点的next要为NULL;
s->next = p;//将创建并赋值的节点p连接到head上。
for(i = 1; i <= num-1; i++)//相同操作,创建节点赋值连接到head后面,只是每个新节点都直接放到head后面,
{
p1 = (struct node *)malloc(sizeof(struct node));
if(p1 == NULL)
{
printf("未正常分配内存");
exit(1);
}
scanf("%d",&p1->data);
p1->next = p;//新创建的节点next指向前一个建立的节点;
s->next = p1;//head的next指向新创建的节点,
p = p1;//把新创建的节点变成下一个要创建节点的前一个节点;
}
//这里的最后节点next赋值NULL只能放到最前面赋值,因为第一个创建的节点就是链表最后一个节点;
}
4.2;尾插法;
//尾插法创建链表; 接下来的节点是按顺序依次接到前个节点的后;
//这里s的作用是移动,每次都是指向刚创建完的节点,也就是指向即将创建的节点的前一个节点,尾连接的目的
void creat1(struct node * s, int num)//用结构体指针指向head,达到通过s来创建链表;
{
if(num <= 0)
{
printf("输入的节点数不对\n");
exit(1);
}
struct node * p;
int i;
for(i = 1; i <= num; i++)
{
p = (struct node *)malloc(sizeof(struct node));
if(p == NULL)//注意不能丢,使用malloc就要判断是否成功;
{
exit(1);
}
scanf("%d",&p->data);
s->next = p;//将s的next执行刚创建的节点;达到连接节点的作用
s = p;//s执行刚创建的节点;
}
s->next = NULL;//表示最后一个节点的next指向NULL。
}
5;链表的遍历输出;
main方法里面;
printf("原链表节点\n");
print(&head,n);
//依次遍历链表并输出;
void print(const struct node \*s,int n)
{
int i;
for(i = 1; i <= n; i++)//遍历;
{
s = s->next;//移动指针进行遍历输出;
printf("第%d节点数据域为%d\n",i, s->data);
}
}
6;关于对链表节点查询;有两种一个是对值的查询,一个是对节点序号的查询;
6.1;
main方法里面的;
/* 测试按值查找
printf("输入要查找的值\n");
scanf("%d",&data1);
getdata(&head,data1);
\*/
//按值查找链表;
void getdata(const struct node * s , Elem data1)
{
int k = 0,flag = 0;
while(s->next != NULL)//遍历链表,到最后一个节点NULL
{
s = s->next;
k++;
if(s->data == data1)//进行比较查找
{
flag = 1;
printf("%d ",k);
}
}
if(flag == 0)
{
printf("在该链表中没有找到%d",data1);
}
printf("\n");
}
6.2;
//main方法里面的
/* 测试返回第num个节点的数据域;
printf("输入要查找数据域节点的标号\n");
scanf("%d",&num);
getlocate(&head,num);
\*/
//输出某个节点的数据域;
void getlocate(const struct node \*s, int num)
{
if(num <= 0 || num > getlen(s))
{
printf("输入的节点数不对\n");
exit(1);
}
int i;
for(i = 1; i <= num; i++)//遍历到,是s指向第num个节点;
{
s = s->next;
}
printf("该链表的第%d的节点的数据域为%d\n",num,s->data);
}
7,返回链表长度;
调用的方法;
getlen(&head);
//计算链表的长度;
//指针s是变化的,遍历整个链表,链表结束的标志就是最后一个节点的next为NULL;
int getlen(const struct node * s)
{
int num = 0;
while(s->next != NULL)//遍历;
{
s = s->next;
num++;
}
return num;
}
8;删除节点的操作;
8.1;
main方法里面;
/\*验证删除函数;delete1(&head,num);
printf("输入要删除节点的节点号\n");
scanf("%d",&bh1);
delet1(&head,bh1);
printf("删除第%d个节点后的链表\n",bh1);
print(&head,n-1);
\*/
//删除链表的第num个节点;
//指针s是变化的,最初是指向head的,后面指向num节点前的一个节点,
void delet1(struct node * s, int num)
{
if(num <= 0 || num > getlen(s))
{
printf("输入的节点数不对\n");
exit(1);
}
struct node \*p1;
int i;
for(i = 1; i <= num-1; i++)//遍历s指向第num节点的前一个节点
{
s = s->next;
}
p1 = s->next;//将要p1指向要删除的节点,为后续释放空间做准备;
s->next = s->next->next;//到达删除目的,删除节点前的节点的next指向删除节点后的节点;
free(p1);//释放空间。
}
8.2;删除一段节点
main函数中;
/\*测试删除一段节点的函数
printf("输出要删除的节点区域\n");
scanf("%d %d",&st,&end);
delet2(&head,st,end);
printf("输出删除节点后的链表\n");
print(&head,n-(end-st));
\*/
//删除一段区间的节点;从num1到num2,包前不包为,删除num1不删除num2;
void delet2(struct node \*s, int num1, int num2)
{
ListNode * p, * p1;
int i;
if(num1 > num2)
{
printf("输入的两个节点序号顺序有错\n");
}
pd(s,num1);
pd(s,num2);
for(i = 1; i < num2; i++)
{
if(i == num1)
{
p = s;
}
s = s->next;//先判断再移动;
}
p1 = s->next;
p->next = p1;
}
9;插入函数;
main方法里面;
/* 验证插入函数,insert(&head,num);
printf("输入要插入到节点后的节点号\n");
scanf("%d",&bh2);
insert(&head,bh2);
print(&head,n+1);
**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/937ca48b5e652c9886a19042ac0d70f4.png)
![img](https://img-blog.csdnimg.cn/img_convert/4f0e1d1a522bee29dc8e4a666df29a9f.png)
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
N2KqDHt-1715866669501)]
[外链图片转存中...(img-hhT4PIWp-1715866669501)]
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**