既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
typedef unsigned int uint;
uint cnt = 0;
void Initlist(void);
uint Delete(uint data);
slinknode * findAdr(void);
uint Insert(uint data);
void pr(slinknode * ptr);
int main()
{
Initlist();
Insert(1);
Insert(2);
Insert(3);
Insert(4);
pr(listadr);
printf(“____________________\n”);
Delete(4);
pr(listadr);
printf(“____________________\n”);
Delete(3);
pr(listadr);
return 0;
}
void Initlist(void)
{
uint i;
for(i=0; i<linksizemax; i++){//先将内存初始化
list[i].next = NULL;
}
listadr = NULL;
cnt = 0;
}
slinknode * findAdr(void)
{
uint i;
if(cnt < linksizemax)
{
for(i = 0; i < linksizemax; i++)
{
if(list[i].next == NULL)
{
return &list[i];//在数组里面寻找空的地方,来存放。
}
}
}
return NULL;
}
uint Insert(uint data)
{
slinknode *tempptr = NULL;
tempptr = findAdr();
if(tempptr != NULL)
{
tempptr->data = data;
if(!cnt)//如果是首元素
{
tempptr->next = tempptr;
listadr = tempptr;
}
else
{
tempptr->next = listadr->next;
listadr->next = tempptr;
/\*
这样不行 这样的最后一个节点的next一直都是指向第一次插入的节点(也就是本身) 不会变化
tempptr->next = listadr;
listadr = tempptr;
*/
}
cnt++;
return 1;
}
return 0;
}
uint Delete(uint data)
{
uint i;
slinknode *temp = NULL;
temp = listadr;
if(cnt == 1 && listadr->data == data)//判断当只有一个元素时要删除的情况
{
listadr = NULL;
cnt–;
return 1;
}
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**