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

代码随想录算法训练营第三天 | 链表理论基础 | 203.移除链表元素

  • 感觉上是可以轻松完成的,因为对链接的结构,元素的删除过程心里明镜似的

  • 实际上四处跑气

    • 结构体的初始化好像完全忘掉了,用malloc折腾半天,忘记了用new,真想扇自己嘴巴子到飞起
    • 删除后写一个函数,把链表打印出来,对于有些数据始终报段错误,后来发现是removeElements函数的返回值没有重新给头指针赋值,导致还指向已被删除的空间
  • 现在这些知识点自己还是有些基础的,但完全手生到跟没学一样啊

  • #include <iostream>struct ListNode {int val = 0;ListNode* next;ListNode(): val(0), next(nullptr) {}ListNode(int v): val(v), next(nullptr) {}ListNode(int v, ListNode* _next): val(v), next(_next) {}
    };class Solution {
    public:ListNode* removeElements(ListNode* head, int val) {if (head == nullptr) return nullptr;auto* visualHead = new ListNode(0);visualHead->next = head;for (auto *p = visualHead; p->next != nullptr;) {if (p->next->val == val) {auto* temp = p->next;p->next = p->next->next;delete temp;} else p = p->next;}head = visualHead->next;delete visualHead;return head;}void show(ListNode* head) {for (auto* p = head; p != nullptr; p = p->next)std::cout << p->val << " ";std::cout << std::endl;}
    };int main()
    {int del_val;std::cin >> del_val;ListNode* p = nullptr;for (int val; std::cin >> val; p = new ListNode(val, p));std::cout << del_val << std::endl;Solution s;p = s.removeElements(p, del_val);s.show(p);return 0;
    }
    // 执行后输入5 5 5 3 2 5 5 1 a
    // 第一个5表示要删除的值,最后一个a表示输入结束,一开始会反向生成链表1->5->5->2->3->5->5->5,然后再把5的结点删除
    
  • 测试代码耗时至少二个小时

  • 在测试时发现,对链接的边界处的值设定与安排还是一头雾水,思想深刻度与对链表更精深的理解还不到位

  • 当天其它题目:设计链表

  • 当天其它题目:反转链表

  • 汇总

http://www.lryc.cn/news/504418.html

相关文章:

  • 1. 机器学习基本知识(5)——练习题(1)
  • vue 自定义组件image 和 input
  • 系列3:基于Centos-8.6 Kubernetes使用nfs挂载pod的应用日志文件
  • Jfinal项目整合Redis
  • 在Ubuntu服务器上备份文件到自己的百度网盘
  • Unity 模板测试透视效果(URP)
  • 《计算机视觉证书:开启职业发展新航道》
  • .NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】
  • Git-分布式版本控制工具
  • C++ 第10章 对文件的输入输出
  • 【机器学习】手写数字识别的最优解:CNN+Softmax、Sigmoid与SVM的对比实战
  • android 聊天界面键盘、表情切换丝滑
  • Web项目图片视频加载缓慢/首屏加载白屏
  • 关于Git分支合并,跨仓库合并方式
  • [网络] UDP协议16位校验和
  • Vue 3 中的 `update:modelValue` 事件详解
  • vue3+vite+ts 使用webrtc-streamer播放海康rtsp监控视频
  • QT数据库(四):QSqlRelationalTableModel 类
  • 蓝桥杯刷题——day5
  • YOLO11改进-模块-引入多尺度差异融合模块MDFM
  • vlan和vlanif
  • Apache Kylin最简单的解析、了解
  • MySQL——连接
  • 前端微服务实战:大型应用的拆分与治理
  • Linux shell的七大功能 --- history
  • C++ webrtc开发(非原生开发,linux上使用libdatachannel库)
  • C语言刷题
  • LabVIEW实现RFID通信
  • Linux 网络流量控制 - 实现概述
  • 分布式 令牌桶算法 总结