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

【每日一题】移除链表元素(C语言)

移除链表元素,链接奉上
在这里插入图片描述

目录

  • 思路:
  • 代码实现:
  • 链表题目小技巧:

思路:

正常情况:
下我们移除链表元素时,需要该位置的前结点与后节点
在这里插入图片描述
特别情况时:
例如在这里插入图片描述

我们发现,需要改变头结点,否则因为返回的head因为指向的位置被free,会导致程序错误

代码实现:

struct ListNode* removeElements(struct ListNode* head, int val) 
{struct ListNode* prev = NULL;struct ListNode* cur = head;while(cur)//当cur为NULL时自动结束{if(cur->val == val)//分别判断cur->val的情况{struct ListNode* next = cur->next;free(cur);if(!prev){//当prev为NULL时改变headhead = next;}else{prev->next = next;}cur = next;}else{prev = cur;cur = cur->next;}}return head;
}

链表题目小技巧:

我们调试时可以在VS或其他的软件进行调试,也不用专门搞一个链表:
可以创建一个如下的main函数,根据题目要求进行调试

int main()
{struct ListNode* n1 = (ListNode*)malloc(sizeof(ListNode));struct ListNode* n2 = (ListNode*)malloc(sizeof(ListNode));struct ListNode* n3 = (ListNode*)malloc(sizeof(ListNode));struct ListNode* n4 = (ListNode*)malloc(sizeof(ListNode));struct ListNode* n5 = (ListNode*)malloc(sizeof(ListNode));if (!(n1 && n2 && n3 && n4 && n5)){perror("malloc");return -1;}n1->next = n2;n2->next = n3;n3->next = n4;n4->next = n5;n5->next = NULL;n1->val = 1;n2->val = 2;n3->val = 3;n4->val = 4;n5->val = 5;return 0;
}
http://www.lryc.cn/news/219292.html

相关文章:

  • stm32 ADC
  • linux网络服务综合项目
  • 每日一题(LeetCode)----数组--移除元素(三)
  • AI:57-基于机器学习的番茄叶部病害图像识别
  • 人工智能-深度学习计算:层和块
  • Linux第一个小程序进度条
  • JavaEE平台技术——预备知识(Maven、Docker)
  • 【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理)
  • 【位运算】XOR Construction—CF1895D
  • 解决Visual Studio Code 控制台中文乱码问题
  • React Native自学笔记
  • 程序员笔记本电脑选 windows 还是 MAC
  • 蓝桥杯每日一题2023.11.5
  • 多媒体应用设计师 2023年(含答案回忆版)
  • [Machine Learning][Part 8]神经网络的学习训练过程
  • Git 内容学习
  • Zookeeper3.7.1分布式安装部署
  • CSS必学:元素之间的空白与行内块的幽灵空白问题
  • C++类中对构造函数的重载
  • QtC++与QLabel详解
  • 090基于web+springboot的中小企业设备管理系统
  • input 调起键盘 ,键盘距离输入框底部太近
  • 前端深拷贝与浅拷贝的实现
  • 哆啦百宝箱APP
  • lv9 嵌入式开发 数据库sqlite
  • 「Verilog学习笔记」异步复位的串联T触发器
  • 什么是51单片机,,如何写代码,并且烧录?
  • Multer 实现文件上传功能
  • Excel·VBA工作表导出为图片
  • 【零基础抓包】Fiddler超详细教学(一)