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

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

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

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

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

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

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

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

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

  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/curo0119/p/8611735.html
Copyright © 2011-2022 走看看