在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
来源:互联网 发布:淘宝好评大全50字 编辑:程序博客网 时间:2024/05/20 15:11
时间:2014.04.26
地点:基地
—————————————————————————
一、题目
题目是很简单和基础,就是在单链表的第i个位置后插入一个节点,要求写代码,5分钟之内完成,面腾讯和阿里的同学都有面到,于是总结几个技巧,这种限时写代码往往一紧张虽然特基础但稍加不注意也很容易出错。
—————————————————————————
二、分析
1.先按照一般的步骤,我们要得到第链表第i个位置的指针。
2.然后再在刚刚得到的指针之后插入新节点
Node* ListLocate(Node* head_ptr,size_t position){Node* curosr=nullptr;for(size_t i=1;(i<position)&&(cursor!=nullptr);++i)cursor=cursor->get_link();return cursor;}const Node* ListLocate(const Node* head_ptr,size_t position){const Node* curosr=nullptr;for(size_t i=1;(i<position)&&(cursor!=nullptr);++i)cursor=cursor->get_link();return cursor;}void ListInsert(Node* previous_ptr;const Node::value_type& entry){Node* insert_ptr=new Node(entry,previous_ptr->get_link());previous_ptr=insert_ptr;}
—————————————————————————
三、总结
这里获得第i个位置的指针写了两个版本,即为提供通用性,当然这里对于题目要求的是多余的,因为题目要求是肯定要通过指针修改链表。个人比较喜欢固定一种模式,即常用的代码编写模式,如果算法实现原理是一样的,只是在代码的表现上有所区别,我觉得就没必要花心思耍花样,今天用cursor遍历链表,明天用list_ptr遍历链表,往后也不容易出错。在链表的实现中比如还可提炼几种编码规范:
1.使用cursor遍历链表指针
for(Node* head_ptr;cursor!=nullptr;cursor=curosr->get_link()){ .......}
2.提供两个版本的编号定位节点的函数或者匹配定位节点的函数
0 0
- 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
- 在单链表的第i个位置插入一个新结点
- 腾讯,阿里等面试题(一)
- 单链表--在第i个位置前插入元素e
- 51. 腾讯面试题:一个二叉树,中序遍历,找一个节点的后一个节点
- 【单链表经典面试题解析三】在无头单链表的一个非头节点前插入一个节点(要求不能遍历单链表)
- 顺序表中在第i个数据元素位置上插入一个数据元素(修改)
- 链式存储中在第i个位置插入或删除的时间复杂度
- 华为(2007年3月)一道面试题: c语言删除一个字符串中的第i个字符后的j个字符
- 华为(2007年3月)一道面试题: c语言删除一个字符串中的第i个字符后的j个字符
- 面试题:一个数组插入另一个数组指定的位置
- 腾讯的一个面试题
- 腾讯面试题:查找单链表的中间节点
- 腾讯php面试题总结(一) 15个魔术方法的总结
- 腾讯php面试题总结(一) 15个魔术方法的总结
- 【经典面试题】寻找单链表倒数第n个节点
- 腾讯等面试题
- 腾讯等面试题
- 电脑断电丢失文件怎么办
- 用Xamarin Mono编写ios Android通用手机软件
- iOS内存管理之:引用计数、ARC、自动释放池autoreleasepool和便捷方法之间的关系
- oracle集合类型
- 一印度学生Asp.net源码分享讨论
- 在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
- Cracking the coding interview--Q20.10
- poj3041Asteroids 简单二分匹配
- cocos2d-x:初探TestLua
- My Brute
- vxworks信号量分析
- 全面掌握ISO8583报文协议
- va_start和va_end的使用
- Asp.net 5种页面转向方法