leetcode707:设计链表(增删差)
一:题目
二:上码
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(链表理论基础、移除链表元素、设计链表翻转链表)
链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思). 单链表 双链表 ...
- day03链表基础_移除链表元素_设计链表_反转链表
链表理论基础 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思). 链表的入口节点称 ...
- 【实战】ACM 选手图解 LeetCode 设计链表
大家好呀,我是蛋蛋. 今天来设计链表,强行学明白链表的 5 种操作. 板凳摆好,直接开整. LeetCode 107:设计链表 题意 实现链表的查找.头插法.尾插法.通用插入.删除操作: get(in ...
- 卷进大厂系列之LeetCode刷题笔记:设计链表(中等)
学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下 ...
- Java设计链表(不带头结点的单链表)
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- leetcode设计链表,非常工整的实现你值得拥有
设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...
- 设计链表(Leetcode第707题)
此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 此题涵盖了链表的常见操作,是练习链表操作非常好的一道题目 题目描述: 设计链表的实现 ...
- python求单链表的长度_709. 设计链表(Python)
题目 难度:★★☆☆☆ 类型:链表,设计题 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针 ...
- 力扣707设计链表(单链表,JavaScript)
1,头指针指向列表第一个元素,尾指针指向链表最后一个元素,链表末尾的index=this.size-1 var MyLinkedList = function() {this.size=0this.h ...
最新文章
- 抢了人类编辑饭碗的AI算法,会完胜吗?
- 无线分类新写法,是不是很吊@!
- MapInfo开发心得——多地图关联篇【转】
- Python——蟒蛇绘制
- 绝了!Pandas绘图功能
- ueditor php 网络链接错误,ueditor使用editor.execCommand( 'link', {})插入链接无效的问题...
- NSIS 查找文件是否存在,并设置安装路径
- hadoop设置java环境_hadoop安装(3)_Linux配置JDK环境
- integer 负数字符串比较_JAVA源码之Integer-1
- 日期时间选择器 DateTimePicker 1127
- 线程Thread类的start()方法和run()方法
- Android自定义Toast
- Centos-redis安装配置
- GridView的多表头(排序)实例方法
- MySQL8.0 - 新特性 - 临时表改进 1
- 在苹果笔记本如何使用python_苹果电脑系统如何运行python工具介绍
- Linux使用命令行工具管理用户和组
- win10禁用全角_Win10微软拼音无法切换输入法全角和半角怎么办?
- 系统名称:联想ThinkpadOEM Win7SP1简体中文旗舰版原版光盘镜像64位
- java计算机毕业设计基层党支部建设平台源码+mysql数据库+系统+lw文档+部署