zoukankan      html  css  js  c++  java
  • 链表面试题(简答)

    1.简述链表和数组的区别

    1.(数组访问数据容易,插入和删除难)数组是将元素在内存中连续存放,可以通过下标迅速访问数组中任何元素。但如果要在数组中增加或删除一个元素,需要移动大量元素。

    (链表访问数据要遍历,插入删除易)链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。(增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。)

     数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);

     数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。

    2.数组静态分配内存,链表动态分配内存;.数组不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。

       链表它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
    3.(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
              链表从堆中分配空间, 自由度大但申请管理比较麻烦

    4.数组在内存中连续,链表不连续;    

  • 相关阅读:
    win7系统中如何使文件显示出扩展名
    source insight
    9-mwwtj-2r6fk-xeu7c-cj6em-asm6m
    修改palceholder内文字的css样式
    移动端页面默认样式重置
    classpath路径
    在Windows系统里创建.gitignore文件
    MessageDigest
    Integer.toHexString(byte & 0xFF)
    jQuery的extend方法
  • 原文地址:https://www.cnblogs.com/curo0119/p/8611735.html
Copyright © 2011-2022 走看看