1、引言

工作一年了,感觉越来越懒散,把很多基础性的东西都慢慢遗忘了,最近想趁着还没忘完,回顾一下,整理了点笔记,分享一下。

如有错的地方,欢迎大家怒喷。

2、学习

我们就从最简单的链表开始吧。

链表其实跟数组有点像,都是一串相同类型的元素的集合,最大的不同点在于:数组是一片连续的空间,其中的元素可以通过下标来访问,但删除元素的时候有点麻烦,需要将该元素之后的元素都向前移动一个位置;而链表是通过指针来将一串元素连起来的,前一个元素中存有下一个元素的地址,这些元素不一定是连续的,所以访问的时候不能使用下标,但插入和删除的时候会简单很多。

对链表的操作无外乎增、删、改、查,下面我们就来看一下这四种操作的具体步骤。

假设下图是我们要操作的链表:

  查询、修改元素:

查询和修改过程基本一样,修改是先查询在修改,所以就放在一起了,这里我们可以看到,如果想查询一个元素的话,必须从第一个元素开始扫描,直到找到这个元素为止,如果链表中有很多元素而恰好我们要查询的元素又比较靠后,就比较耗时了,所以如果你的应用要做很多查询操作的话,使用数组会更好,因为数组可以用下标来访问,时间复杂度为O(1),效率秒杀链表。

删除元素:

删除元素很简单,找到要删除的元素,将上一个元素的Next指针指向要删除元素的下一个位置即可。

增加元素:

增加元素稍微复杂点,首先将A6的Next指针指向A4,然后再将A3原先指向A4的指针指向A6,这样A6就插入到了A3到A4之间了。

(由于单链表原理比较好理解,这里就不提供代码了。)

数据结构&算法-单链表的更多相关文章

  1. Python数据结构之单链表

    Python数据结构之单链表 单链表有后继结点,无前继结点. 以下实现: 创建单链表 打印单链表 获取单链表的长度 判断单链表是否为空 在单链表后插入数据 获取单链表指定位置的数据 获取单链表指定元素 ...

  2. javascript数据结构之单链表

    下面是用javascript实现的单链表,但是在输出的时候insert方法中存在问题,chrome的console报错说不能读取空的属性,调试了很久都没有通过,先在这里存着,以后再来修改一下. //数 ...

  3. 数据结构之单链表的实现-java

    一.单链表基本概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元(一般是非连续存储单元)存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素data + 指针next ...

  4. js数据结构与算法--单链表的实现与应用思考

    链表是动态的数据结构,它的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 现实中,有一些链表的例子. 第一个就是寻宝的游戏.你有一条线索,这条线索是指向寻找下一条线 ...

  5. 数据结构 - 动态单链表的实行(C语言)

    动态单链表的实现 1 单链表存储结构代码描述 若链表没有头结点,则头指针是指向第一个结点的指针. 若链表有头结点,则头指针是指向头结点的指针. 空链表的示意图: 带有头结点的单链表: 不带头结点的单链 ...

  6. 数据结构(2):单链表学习使用java实现

    单链表是单向链表,它指向一个位置: 单链表常用使用场景:根据序号排序,然后存储起来. 代码Demo: package com.Exercise.DataStructure_Algorithm.Sing ...

  7. 数据结构:单链表结构字符串(python版)添加了三个新功能

    #!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...

  8. 数据结构:单链表结构字符串(python版)改进

    此篇文章的replace实现了字符串类的多次匹配,但依然有些不足. 因为python字符串对象为不变对象,所以replace方法并不修改原先的字符串,而是返回修改后的字符串. 而此字符串对象时用单链表 ...

  9. 数据结构:单链表结构字符串(python版)

    #!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...

随机推荐

  1. IT公司100题-tencent-打印所有高度为2的路径

    问题描述: 打印所有到叶子节点长度为2的路径  10  /  \ 6   16 / \   / \ 4 8  14 18   / \    / \    \ 2  5  12 15 20 / 11   ...

  2. 简单json语句转化为map保存

    主要用到了 net.sf.json.JSONObject类 需要用到的jar包 : jar包下载地址 package test; import java.io.BufferedReader; impo ...

  3. Oracle数据库中scott用户不存在的解决方法

    SCOTT用户是我们学习Oracle过程中一个非常重要的实验对象,在我们建立数据库的时候,如果是选择定制模式的话,SCOTT用户是不会默认出现的,不过我们可以通过使用几个简单命令来使这个用户出现.以下 ...

  4. C++ explicit关键字应用方法详解

    C++编程语言中有很多比较重要的关键字在实际编程中起着非常重要的作用.我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字.下面就让我们一起来看看这方面的知识吧. C++ ...

  5. 软件测试面试(2)LR篇

    一:LoadRunner常见问题整理 1.LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen. ...

  6. 2016年发布APASVO-p波震相自动拾取分析

    Why automatic attractive? large amount of seismic data ; if manually,it depends om experience of ana ...

  7. OrCAD搭建Access数据库

    刚进入到一个小公司,接到的第一个电路设计的案子是从零开始的,辛苦就不说,关键是这么不严谨,容易出错,于是乎,问题来了,能否从零开始着手建立个类似于以前公司的数据库,管理原理图封装,PCB封装及规格书! ...

  8. 一行代码从表中选取N行到另一个表

    private void Form1_Load(object sender, EventArgs e) {            DataTable dt = new DataTable();     ...

  9. ArrayBlockingQueue-我们到底能走多远系列(42)

    我们到底能走多远系列(42) 扯淡: 乘着有空,读些juc的源码学习下.后续把juc大致走一边,反正以后肯定要再来. 主题: BlockingQueue 是什么 A java.util.Queue t ...

  10. YMMI001-采购单审批

    ************************************************************************ Report : YMMI1 ** Applicati ...