zoukankan      html  css  js  c++  java
  • 链表

    一 单向链表

    1插入  在a和c之间插入b

            b.next = a.next;   //a的后继(c)变为b的后继

            a.next = b;   //b变为a的后继

    2删除  在a和b之间删除c

    1. next =c.next; //c的后继(b)变为a的后继

    二 双向链表

    1插入  在a和c之间插入b

    b.next=a.next;//a的后继(c)变为b的后继

       a.next.previous=b;//b变为a后继(c)的前驱

       b.previous=a;//a为b的前驱

       a.next=b;//b为a的后继

    问:在两个元素之间插入新元素,先计算新元素与后面的关系还是前面的关系?

    答:都行。一般双向链表是在数据存储中使用的,如果需要插值,一定要先锁住链表,插值结束后再解锁,如果不加锁,那个先那个后都有问题。

    2 删除  在a和c之间删除b

            b.previous.next=b.next;//b的后继(c)变为b前驱的后继(即a的后继)

            b.next.previous=b.previous;//b的前驱(a)变为b后继的前驱(即c的前驱)

    数组与链表性能比较

      数组和链表都是线性表,数组是线性表的顺序实现,链表是线性表的链接实现

    1 空间性能

       衡量指标通常是存储密度,存储密度是指存储结点中数据域占用的存储量与整个存储结点所占用的存储量之比。数组为1,链表小于1。数组的空间利用率高与链表。

    2 时间性能

      运算实现的时间复杂度

      对于查询运算,数组O(1),链表O(n)

      对于插入和删除运算,数组O(n),链表O(n)

  • 相关阅读:
    我理解的Node.js
    How to handle the issue of node.js msi to roll back under windows 8
    转:.Net 中AxShockwaveFlash的解析
    鱼哥的C++学习笔记(一)编译方法
    TabControl样式编写
    Cocos2d on VS12 step by step
    C# 控制Windows系统音量
    系统环境换成Win8+Vs2012碰到的问题记录
    Http学习笔记(一)
    WPF ListBox Template解析
  • 原文地址:https://www.cnblogs.com/wwzyy/p/4386038.html
Copyright © 2011-2022 走看看