zoukankan      html  css  js  c++  java
  • 数组、链表、哈希表

    程序中,存放指定的数据最常用的数据结构有两种:数组和链表。

    数组和链表的区别:

    1,数组是将元素在内存中连续存放。

          链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。

    2,数组必须事先定义固定的长度,不能适应数据动态的增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费; 

          链表动态地进行存储分配,可以适应数据动态地增减的情况。

    3,(静态)数组从栈中分配空间,对于程序员方便快速,但是自由度小;

          链表从堆中分配空间,自由度大但是申请管理比较麻烦。

    数组和链表在存储数据方面到底谁好?根据数组和链表的特性,分两种情况讨论:

    1,当进行数据查询时,数组可以直接通过下标迅速访问数组中的元素。

         而链表则需要从第一个元素开始一直找到需要的元素位置,

           显然,数组的查询效率会比链表的高。

    2,当进行增加或删除元素时,在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样,如果想删除一个元素,需要移动大量去填掉被移动的元素,而链表只需改动元素中的指针即可实现增加或删除元素。

    那么哈希表,是既能具备数组的快速查询的优点,又能融合链表方便快捷的增加删除元素的优势。

    所谓的hash,简单的说就是散列,即将输入的数据通过hash函数得到一个key值,输入的数据存储到数组中下标的key值的数组单元中去。

  • 相关阅读:
    jQuery 遍历函数 ,javascript中的each遍历
    定时器:右下角滑动信息通知
    nopad++将制表符替换为换行符
    使用git提交远程仓库
    (转)解决windows解决windows 7 部分程序图标显示不正常的问题
    设置gvim的字体大小
    mysql乱码
    (转)notepad++去重
    查看linux硬件的信息
    虚拟机安装centos6.5出现Error processing drive:pci-0000:00:10-scsi-0:0:0:0问题
  • 原文地址:https://www.cnblogs.com/ning123/p/10693322.html
Copyright © 2011-2022 走看看