zoukankan      html  css  js  c++  java
  • 数据结构与算法(4)----->链表、二分搜索

    1.  链表的基本概念

    1. 链表和数组一样都是一种线性结构;
      • 数组是一段连续的存储空间;
      • 链表空间不一定保证连续,是临时分配的;
    2. 链表的分类
      • 按方向:
        • 单链表:每个节点只能通过next指针指向下一个节点;
        • 双链表:除了可以用next指针之外,还可以用previous指针,指向前一个节点;
      • 按有无环:
        • 普通链表
        • 循环链表(首尾相接的链表,最后一个元素的next指针指向第一个元素;对于双链表,第一个元素的previous指针还需要指向最后一个元素)

    2.  单链表的翻转操作

    1. 当链表为空或者长度为1时,特殊处理;
    2. 其他的单链表,采用如下方式:
      • 假设前面已经翻转好的部分头部为head,当前节点是now
        • 将now节点的next指针指向head;
        • 将now节点设置为新的翻转完成的节点的头部head now;
        • 将之前now节点的下一个节点的next指针,指向head now,如此类推~

    3.  二分搜索常用场景

    1. 在有序序列中查找一个数;
      • 例如,给定一个数组arr,判断整数m是否在arr之中(思路:判断arr中间的数mid与m的大小关系,如果m>mid,则mid左边部分都小于m(因为有序),同样的方法,对mid与右半部分之间的元素再次选取mid2进行同样的搜索操作!每次搜索范围减半,如果最后搜索到0都没找到m,则m不在arr数组之中!返回false)
    2. 二分搜索还能用于无序序列之中;
  • 相关阅读:
    linux配置虚拟机的网络服务
    js动态生成层方法 不懂得加QQ 2270312758
    js中let和var的区别 不懂得加QQ 2270312758
    C#特性详解
    (四)python之文件处理
    (三)python之字符编码
    (二)Python之数据类型
    (一)python基础
    (2)库相关操作
    (1)初始数据库
  • 原文地址:https://www.cnblogs.com/Mairr/p/8408476.html
Copyright © 2011-2022 走看看