当前位置: 首页 > news >正文

ESP-IDF:企业链表例程,实现初始化,插入,打印等功能。

例程:

简单地写一下企业链表,实现初始化,插入,打印等功能。

/企业链表/
typedef struct LINKNODE09
{ // 定义节点
LINKNODE09 *next;
} linknode09;
// 定义表头
typedef struct LINKLIST09
{ // 定义表头
linknode09 head;
int size;
} linklist09;

linklist09 *initiallist09()
{
linklist09 *linklistp = (linklist09 *)malloc(sizeof(linklist09));
linklistp->head.next = NULL;
linklistp->size = 0;
return linklistp;
}

void freelinklist09(linklist09 *listp)
{
if (listp == NULL)
{
return;
}
free(listp); // 只有表头是在链表程序中添加的,所以只需要释放表头
}

void insertdataforlist09(linklist09 *listp, void *data, int pos)
{
if (listp == NULL)
{
return;
}
if (data == NULL)
{
return;
}

if(pos < 0 && pos > listp->size){
    pos = 0;
}

linknode09 *pCurrent = &(listp->head); // 临时节点拿到表头中保存下一个节点指针的地址
for (int i = 0; i < pos; i++)
{
    pCurrent = pCurrent->next;
}

linknode09 *p = (linknode09 *)data; // 把data转换成linknode类型
p->next = pCurrent->next;           // 新节点指向它要插入的节点
pCurrent->next = p;                 // 新节点前面的节点指向新节点

listp->size += 1;

}

struct person09
{
linknode09 *next;
int age;
};

typedef void (*PRINT09)(void *); // 定义一个函数指针类型
void print09(void *pNode)
{
person09 *pp = (person09 *)pNode;
cout << "age is: " << pp->age << endl;
}

void printlist09(linklist09 *plist, PRINT09 printp)
{

if (plist == NULL)
{
    return;
}

// linknode09 * pCurrent = plist->head.next;
// for(int i=0; i< plist->size; i++) {
//     print09(pCurrent);
//     pCurrent = pCurrent->next;
// }
linknode09 *pCurrent = &(plist->head);
for (int i = 0; i < plist->size; i++)
{
    print09(pCurrent->next);
    pCurrent = pCurrent->next;
}

}

void test09()
{
person09 p1;
person09 p2;
person09 p3;
person09 p4;
person09 p5;

p1.age = 11;
p2.age = 12;
p3.age = 13;
p4.age = 14;
p5.age = 15;

linklist09 *list09 = initiallist09();
insertdataforlist09(list09, (void *)&p1, 0);
insertdataforlist09(list09, (void *)&p2, 0);
insertdataforlist09(list09, (void *)&p3, 0);
insertdataforlist09(list09, (void *)&p4, 0);
insertdataforlist09(list09, (void *)&p5, -1);
printlist09(list09, print09);
freelinklist09(list09);

}

extern “C” void app_main(void)
{
test09();
}

结果:

在这里插入图片描述

相关文章:

  • 阿里云wordpress扩容/互联网产品运营
  • 做vi网站/电脑系统优化软件哪个好用
  • 成都网站推广找四川冠辰/网站搭建平台
  • dede网站运行天数/想学销售去哪培训
  • 新浪门户网站是谁做的/搜狗站长平台验证不了
  • 武汉网站推广怎么做/常见的微信营销方式有哪些
  • 【pandas】17 数据处理和绘图
  • Redis缓存和数据库不一致性
  • k8s ingress概念和实践
  • 【论文速递】ECCV2022 - 开销聚合与四维卷积Swin Transformer_小样本分割
  • cmakelists例子
  • ES6学习笔记之箭头函数
  • d的更好C关闭ctfe的dup
  • 当青训营遇上码上掘金之主题四-攒青豆
  • javaEE 初阶 — 文件内容的读写
  • Linux chattr命令
  • #9文献学习--基于元强化学习的边缘计算快速自适应任务卸载
  • 一篇文章带你学完JavaScript基础知识,超全的JavaScript知识点总结