时间:2014.04.26

地点:基地

—————————————————————————

一、题目

题目是非常easy和基础,就是在单链表的第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遍历链表,往后也不easy出错。

在链表的实现中比方还可提炼几种编码规范:

1.使用cursor遍历链表指针

for(Node* head_ptr;cursor!=nullptr;cursor=curosr->get_link())
{
.......
}

2.提供两个版本号的编号定位节点的函数或者匹配定位节点的函数

在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)的更多相关文章

  1. 【剑指offer】单链表尾部插入一个节点

    #include <iostream> using namespace std; //链表结构体 struct ListNode { int m_Value; ListNode *next ...

  2. C语言实现单链表的遍历,逆序,插入,删除

    单链表的遍历,逆序,插入,删除 #include<stdio.h> #include<stdlib.h> #include <string.h> #define b ...

  3. Python实现单链表数据的添加、删除、插入操作

    Python实现单链表数据的添加.删除.插入操作 链表的定义: 链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址.由于每个结 ...

  4. 链表操作----将单链表向右旋转 K 个位置

    给定一个单链表,设计一个算法实现链表向右旋转 K 个位置. 举例: 给定 1->2->3->4->5->6->NULL, K=3 则     4->5-> ...

  5. 单链表创建、删除、查找、插入之C语言实现

    本文将详细的介绍C语言单链表的创建.删除.查找.插入以及输出功能 一.创建 #include<stdio.h> #include<stdlib.h> typedef int E ...

  6. 面试题28:单链表一次遍历删除从后往前的第n个节点

    class Solution { public: ListNode *removeNthFromEnd(ListNode *head, int n) { ListNode* fake = ); fak ...

  7. C#单链表

    顺序表是用地址连续的存储单元顺序存储线性表中的各个数据元素, 逻辑上相邻的数据元素在物理位置上也相邻.因此,在顺序表中查找任何一个位置上的数据元素非常方便, 这是顺序存储的优点. 但是, 在对顺序表进 ...

  8. 【 C# 】(一) ------------- 泛型带头节点的单链表,双向链表实现

    在编程领域,数据结构与算法向来都是提升编程能力的重点.而一般常见的数据结构是链表,栈,队列,树等.事实上C#也已经封装好了这些数据结构,在头文件 System.Collections.Generic ...

  9. 线性表之单链表C++实现

    线性表之单链表 一.头文件:LinkedList.h //单链表是用一组任意的存储单元存放线性表的元素,这组单元可以是连续的也可以是不连续的,甚至可以是零散分布在内存中的任意位置. //单链表头文件 ...

随机推荐

  1. nginx:在centos中自启动

    参考网址:http://www.jb51.net/article/120545.htm # vi /etc/init.d/nginx #!/bin/sh # Name:nginx4comex # ng ...

  2. [转]hadoop新手错误解决方法

    解决Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z 等一系列问题,lja ...

  3. TcxGrid 选中 整行

  4. VMware下三种网络连接模式

    VMware下三种网络连接模式 Bridged(桥接模式) 在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问该类网段内任何一台机器. 桥接网络环境下需要做到: 手动 ...

  5. 图学ES6-4.字符串的扩展

  6. wfst的compose算法

    介绍一些compose算法,以及这部分的代码实现. 原理部分参考: 走进语音识别中的 WFST(二) 可以看下示例图: 我们先来看一下 Composition 的效果,图(a)和图(b)Composi ...

  7. Codeforces Round #440 (Div. 1, based on Technocup 2018 Elimination Round 2) C - Points, Lines and Ready-made Titles

    C - Points, Lines and Ready-made Titles 把行列看成是图上的点, 一个点(x, y)就相当于x行 向 y列建立一条边, 我们能得出如果一个联通块是一棵树方案数是2 ...

  8. Storm介绍及核心组件和编程模型

    离线计算 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据.MapReduce批量计算数据.Hive批量计算数据.azkaba ...

  9. P1890 gcd区间

    P1890 gcd区间我一开始80分暴力,模拟100做法dpO(n^2+m)f[i][j]表示i到j的 gcd初始化f[i][i]=i;f[i][j]=gcd(f[i][j-1],a[j]);这样查询 ...

  10. 图片视频访问servlet(支持苹果视频断点续传)

    package com.sm.common.servlet; import java.io.File; import java.io.FileInputStream; import java.io.F ...