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

链表的使用

链表

typedef struct {int val;struct ListNode *next;
}ListNode;

初始化

ListNode* InitListNode(int val){ListNode *a ;a = (ListNode *)malloc(sizeof(ListNode));a->next = NULL;a->val = val;return a;
}

插入

//在a后面插入b
void insert(ListNode *a , ListNode *b)
{b->next = a->next;a->next = b;
}

删除

//删除a后面的节点
void del( ListNode * a){if(!a->next) return ;ListNode * p = a->next;ListNode * n = p->next;a->next = n;free(p);
}

访问节点

ListNode *access(ListNode *n,int index){for (int i=0;i<index;i++){if(n->next==NULL) return NULL;n=n->next;}return n;
}

查找

int find(ListNode * node,int target){int index = 0;while(node){if(node->val == target) return index;node = node->next;index++;}reutrn -1;
}

双向链表

typedef struct DoublyListNode{int val;struct DoublyListNode *prev;struct DoublyListNode *next;
} DoublyListNode;

初始化

ListNode *newDoublyListNode(int val){DoublyListNode *node;node = (DoublyListNode *)malloc(sizeof(DoublyListNode));node->prev = NULL;node->next = NULL;node->val = val;
}

析构函数

void delDoublyListNode(DoublyListNode *node){free(node);
}

寻找第i个节点

DoublyListNode GetElem(DoublyListNode * node, int i){for(int j=0;j<i;j++){if(node->next == NULL){printf("i too large!!\n");return NULL;}node = node->next;}return node;
}

插入

//s插入到n的前面
void find(DoublyListNode *n ,DoublyListNode *s){s->next = n->next->prev;s->prev = n;n->next->prev = s;n->next = s;
}

删除

void delete(DoublyListNode *s){s->prev->next = s->next;s->next->prev = s->prev;free(s);
}

http://www.mrgr.cn/news/69623.html

相关文章:

  • Redisson 中开启看门狗(watchdog)机制
  • 408笔记合集
  • 星绘AI 0.8.9 | 免费的AI绘画写真滤镜穿搭软件
  • java:继承题练习
  • 「QT」几何数据类 之 QVector2D 二维向量类
  • Mysql数据库里的SSH连接
  • 《Agent 工作流 2025》
  • AI与OCR:数字档案馆图像扫描与文字识别技术实现与项目案例
  • 01_docker安装
  • STM32各模块
  • Elasticsearch 实战应用:高效搜索与数据分析
  • 网络编程中非阻塞的实现方式
  • 540. 有序数组中的单一元素
  • SimpleMemory 博客园主题美化
  • 如何自己实现事件的订阅和发布呢?
  • 基于SpringBoot+Vue音乐播放和推荐系统【提供源码+答辩PPT+参考文档+项目部署】
  • PostgreSQL 用户登录失败账号锁定
  • 基于SpringBoot的“生鲜交易系统”的设计与实现(源码+数据库+文档+PPT)
  • numpy np.logical_not函数介绍
  • LLMs在供应链投毒检测中的应用
  • Python中的动态属性管理:使用`__getattr__`和`__setattr__`实现灵活的数据访问
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于数据-模型混合驱动方法的多类型移动应急资源优化调度策略 》
  • 一文带你看懂Java多线程并发,深度剖析AQS源码
  • 想让水凝胶像智能生物一样行动?光和电怎样赋予其自主 “超能力”?
  • 基于PyQt Python的深度学习图像处理界面开发(一)
  • 【含开题报告+文档+PPT+源码】基于Springboot和vue的电影售票系统