一:题目


二:上码

class MyLinkedList {public://定义链表节点结构体struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val), next(nullptr){}};// 初始化链表MyLinkedList() {node = new LinkedNode(0); // 这里定义的头结点 是一个虚拟头结点,而不是真正的链表头结点_size = 0;}//根据示例我们可以得出下标为0的是第一个数值int get(int index) {if(index > _size - 1 || index < 0){//链表数值范围[0,_size-1]return -1;}   LinkedNode *temp = node->next;while(index--){//这个index--,可以让我们知道指针往后移动的次数,直到为0找到为止temp = temp->next;}return temp->val;}//插入一个新结点 为头节点void addAtHead(int val) {LinkedNode*newNode = new LinkedNode(val);newNode->next = node->next;node->next = newNode;_size++;}    //在尾部插入一个结点void addAtTail(int val) {LinkedNode *newNode = new LinkedNode(val);LinkedNode* temp = node;while(temp->next != NULL){temp = temp->next;}temp->next = newNode;_size++;}//第一种情况:比如(1,2) 则在第二个元素的位置插入2//如果index等于链表长度则在结尾插入一个值//如果大于链表的长度则返回空void addAtIndex(int index, int val) {if(index > _size){return;}LinkedNode* newNode = new LinkedNode(val);LinkedNode* temp = node;//第一个结点是虚拟结点//比如 原来的链表为1->3  然后插入(1,2) 因为有虚拟结点的存在所以//链表实际为(0->1->3)  所以当index为0的时候 temp 指向是链表中的1while(index--){temp = temp->next;}newNode->next = temp->next;temp->next = newNode;_size++;}void deleteAtIndex(int index) {if(index < 0 || index > _size-1)//大于链表的长度return ;LinkedNode* temp = node;while(index--){temp = temp->next;}//当结束while循环的时候  这时候的temp指向的是要删除结点的前一个结点LinkedNode *cmp = temp->next;//cmp指向了要删除的结点temp->next = temp->next->next;delete cmp;_size--;}private:int _size;LinkedNode * node;
};/*** 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);*/


渣渣杰又水了一道 ,这个是关于链表的增删查,得理解每个函数中的边界条件 其次多敲两遍 会熟练一些
晚安 陌生的你 最近开始睡前听播客了 感觉有一个人 一直在我耳边叨叨 排解孤独 还有助入睡 我在知乎上看一篇文章的时候 那篇文章 提到了 张爱玲的《倾城之恋》最近就靠他入睡了 晚安晚安 陌生人!!!

leetcode707:设计链表(增删差)相关推荐

  1. 链表-1(链表理论基础、移除链表元素、设计链表翻转链表)

    链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思). 单链表 双链表 ...

  2. day03链表基础_移除链表元素_设计链表_反转链表

    链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思). 链表的入口节点称 ...

  3. 【实战】ACM 选手图解 LeetCode 设计链表

    大家好呀,我是蛋蛋. 今天来设计链表,强行学明白链表的 5 种操作. 板凳摆好,直接开整. LeetCode 107:设计链表 题意 实现链表的查找.头插法.尾插法.通用插入.删除操作: get(in ...

  4. 卷进大厂系列之LeetCode刷题笔记:设计链表(中等)

    学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下 ...

  5. Java设计链表(不带头结点的单链表)

    设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...

  6. leetcode设计链表,非常工整的实现你值得拥有

    设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...

  7. 设计链表(Leetcode第707题)

    此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 题目描述: 设计链表的实现 ...

  8. python求单链表的长度_709. 设计链表(Python)

    题目 难度:★★☆☆☆ 类型:链表,设计题 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针 ...

  9. 力扣707设计链表(单链表,JavaScript)

    1,头指针指向列表第一个元素,尾指针指向链表最后一个元素,链表末尾的index=this.size-1 var MyLinkedList = function() {this.size=0this.h ...

最新文章

  1. vigra1.8.0的使用
  2. N皇后问题——通俗易懂地讲解(C++)
  3. org manual翻译--2.7 纯文本列表
  4. 关于mysql中 group by , order by , where, having 语句的区别与运用
  5. 弹弹堂手游语音服务器怎么连接,腾讯弹弹堂手游空间怎么进去 互动玩法攻略介绍...
  6. GNSS/INS组合导航(九):三维简化的INS/GPS组合导航系统
  7. 中标麒麟Linux能运行wine吗,中标麒麟V6下wine完美运行通达信
  8. 无法访问https://element.eleme.cn和https://element.eleme.io
  9. 2000年前毕业,学历在学信网查不到解决方法
  10. 信息收集之——FOFA网站常用搜索语法
  11. 2022金属非金属矿山井下电气考试题模拟考试题库及答案
  12. Java服务优雅停机_JAVA优雅停机的实现
  13. 使用pdfbox把PDF转换成图片
  14. B/S 架构 与 C/S 架构
  15. 解决Failing package is:mysql-community-icu-data-files-8.0.29-1.el7.x86_64 GPG Keys are configured as..
  16. mac 更新13.1后使用AccessClient.app 闪退
  17. 用Android做的一个简单的视频播放器
  18. 【机器学习 基本概念】监督学习、无监督学习、半监督学习与强化学习
  19. Python实现对某微博用户数据分析
  20. POI 导入、导出Excel

热门文章

  1. [转]分布式事务之TCC服务设计和实现注意事项
  2. [转]Spring SpringMVC SpringBoot SpringCloud概念、关系及区别
  3. 【地理信息系统GIS】教案(七章全)第二章:地理信息系统数据结构及数据获取
  4. Java之对List里面的对象名字进行模糊查询
  5. linux c之命名管道简单使用
  6. Andriod之使用极光推送自定义消息打造个性的消息推送效果
  7. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?
  8. sparkshelljarlib_Spark应用程序第三方jar文件依赖解决方案
  9. 没有数学天赋是一种什么体验?
  10. 如果你没空读书,就一定要来看看这8个公众号!