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

D6 707.设计链表

707 设计链表(力扣:https://leetcode.cn/problems/design-linked-list/

条件: 见原题链接
Tips:

代码:

点击查看代码
struct ListNode{int val;ListNode* prev;ListNode* next;//使用初始化列表ListNode( int num ) : val(num), prev(nullptr), next(nullptr){}
};
//结构体结束的分号不要丢class MyLinkedList {
private:ListNode* head;int size;public:MyLinkedList() {head = nullptr;size = 0;}int get(int index) {if( index >= size){return -1;}ListNode* current = head;for(int i = 0; i < index; i++){current = current->next;}//current是指针,要用->而非.return current->val;}//极端情况是空链表,不要忘记void addAtHead(int val) {//创建值为val的新节点ListNode* newHead = new ListNode(val);if( head = nullptr){head = newHead;}else{//这里只用把新head和旧head的指针更新newHead->next = head;head->prev = newHead;head = newHead;}size++;}//空链表要考虑void addAtTail(int val) {ListNode* newTail = new ListNode(val);if(head = nullptr){head = newTail;}else{ListNode* current = head;//这里用while遍历更高效,因为尾部的特点是next一定为nullptrwhile( current->next != nullptr ){current = current->next;}current->next = newTail;newTail->prev= current;size++;}}void addAtIndex(int index, int val) {//void函数不能breakif(index >= size){return;//头尾用成员函数}else if( index == 0 ){addAtHead(val);}else if( index == size){addAtTail(val);}else{ListNode* current = head;//不需要节点内再定义一个index//for这里按顺序遍历到的i自然对应节点的排位for(int i = 0; i < index - 1; i++){current = current->next;}ListNode* newNode = new ListNode(val);newNode->next = current;current->prev = newNode;if(current->next != nullptr){current->next->prev = newNode;}current->next = newNode;size++;}}void deleteAtIndex(int index) {if (index < 0 || index >= size) {return;  // 无效索引}if (index == 0) {  // 删除头节点ListNode* toDelete = head;head = head->next;if (head != nullptr) {head->prev = nullptr;}delete toDelete;} else {// 找到第index-1个节点ListNode* current = head;for (int i = 0; i < index - 1; i++) {current = current->next;}ListNode* toDelete = current->next;current->next = toDelete->next;if (toDelete->next != nullptr) {toDelete->next->prev = current;}delete toDelete;}size--;}
};/*** Your MyLinkedList object will be instantiated and called as such:* MyLinkedList* obj = new MyLinkedList();* int param_1 = obj->get(index);* obj->addAtHead(val);* obj->addAtTail(val);* obj->addAtIndex(index,val);* obj->deleteAtIndex(index);*/
http://www.jsqmd.com/news/280606/

相关文章:

  • 基于SpringBoot+Vue一鹿租车公司车辆管理系统的设计与实现
  • 毕业党救星!5个降AI率工具大公开,亲测好用,能帮你把AI率降低80%以上
  • 实验室智能监控系统实战源码-基于YOLOv8的实时目标检测与PyQt5可视化界面
  • 如何在idea中创建mavenweb项目
  • AI率过高有救了!这5个工具实测能打,可将论文AIGC痕迹大幅降低80%
  • Java毕设项目推荐-基于springboot+vue的全国走失儿童认领与登记系统【附源码+文档,调试定制服务】
  • 开箱即用的番茄叶片病害识别平台|YOLOv8+PyQt5实战指南
  • 工控人注意了:Windows近期系统更新会导致你电脑的西门子软件TIA Portal 无法使用,你中招了吗?
  • 计算机Java毕设实战-基于springboot的走失儿童认领与登记系统基于springboot+vue的javaweb宝贝回家走失儿童报备【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 学生党必看:3步轻松改写AI文献综述,教你如何用AI把AI率从80%降到5%!
  • 强烈安利MBA必备TOP8 AI论文软件
  • 基于SpringBoot+Vue医疗陪护服务平台的设计与实现
  • Java计算机毕设之基于springboot+vue的走失儿童认领与登记系统基于SpringBoot的宝贝回家走失儿童报备系统(完整前后端代码+说明文档+LW,调试定制等)
  • 【第1章>第17节】图像黒色顶帽理论分析与MATLAB仿真测试
  • AI与Python双驱动计量经济学多源数据处理、机器学习预测及复杂因果识别
  • Java网络编程:InetAddress 详解
  • 论文AI率过高被警告?学生党的急救方案:降AI工具一键改写,亲测有效!
  • Java毕设项目:基于springboot的走失儿童认领与登记系统(源码+文档,讲解、调试运行,定制等)
  • HEX文件合并全攻略:从原理到实战
  • Kubernetes Dashboard部署与可视化管理实战
  • 还在为AI率头疼?学生党福音:降AI工具免费降重攻略,轻松通过学校AI检测
  • LU,大小鼠脑损伤打击器 脑损伤打击器 自由落体打击器
  • 论文中的关键技术---机器学习与深度学习
  • 警告:论文的AI味太重了!不想延毕就看这篇:降AI工具辅助去AI化实战指南,从50%降到5%
  • 【毕业设计】基于springboot的走失儿童认领与登记系统(源码+文档+远程调试,全bao定制等)
  • 论文救星:6款免费降AI率工具深度体验,大幅降低论文AI痕迹,快速降重80%以上
  • AspNetCore开发笔记:WebApi项目集成企业微信和公众号
  • 拯救毕业论文!5款降AI神器深度测评,有效降低AIGC率超80%,通过查重更轻松
  • 毕业季求生指南:如何利用降AI工具对抗论文AI检测,实现低AI率【建议收藏】
  • 论文降AI率太高怎么办?收藏这5个实测好用的工具,帮你将AIGC率轻松降低80%