`
pingwei000
  • 浏览: 60877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数组与链表的区别

阅读更多

   来自网络:
  
  C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。
  
   链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
  
  A 从逻辑结构来看
  
  A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
  
  A-2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)
  
  
  B 从内存存储来看
  
  B-1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
  
  B-2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦.
  ======================================
  
  数组中的数据在内存中的按顺序存储的,而链表是随机存储的!
  要访问数组中的元素可以按下标索引来访问,速度比较快,如果对他进行插入操作的话,就得移动很多元素,所以对数组进行插入操作效率很低!
  
  由于连表是随机存储的,链表在插入,删除操作上有很高的效率(相对数组),如果要访问链表中的某个元素的话,那就得从链表的头逐个遍历,直到找到所需要的元素为止,所以链表的随机访问的效率就比数组要低
  
  
  数组在内存中开辟连续的一块区域,如果一个数据要两个内存单元,一组5个数据10个单元就够了,无需标记其地址,因为数组定义时候标顶了第一个原许的地址,其他四个都知道了。
  链表可可以是连续的,也可以是不连续的,但一般都是不连续的,尽管在内存中是连续的,我们也不把他当作是连续的,而是把他当作是不连续的,因为如果把他当作是连续的,不如当作是数组了,在某些情况下。一链5个数据,如果每个数据本身用2个内存单元,那么10个单元是不够的,因为每个数据都要表示出下个数据在哪里,所以一个数据本身用2个单元,再用1个单元表示此链下一个数据在什么地址。
  各有用处。

 

双向链表:

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表

分享到:
评论

相关推荐

    面试题总结:数组和链表的区别 数组和链表.pdf

    数组和链表的区别 在计算机科学中,数组和链表是两种基本的数据结构,它们都广泛应用于软件开发和算法设计中。然而,数组和链表有着根本的区别,这些区别决定了它们在不同的场景下的应用。 数组 数组是一种连续...

    pythonlist是数组还是链表实现的-数组和链表结构(python)-1 数组和链表.pdf

    "Python列表是数组还是链表实现的?-数组和链表结构(Python)" Python列表是一个非常常用的数据结构,但是它究竟是数组还是链表实现的?在Python中,列表是使用链表结构实现的,但是在某些情况下,也可以使用数组...

    遍历数组和链表 数组和链表.pdf

    遍历数组和链表 在计算机科学中,数组和链表是两种基本的数据结构,它们之间有着很大的不同,影响着程序的性能和效率。本文将从遍历数组和链表的角度,比较它们之间的差异,探讨数组和链表的优缺点,并分析为什么...

    python算法-数组和链表 数组和链表.pdf

    数组与此不同:你知道其中每个元素的地址。例如,假设有一个数组,它包含五个元素,起始地址为00,那么元素#5的地址是多少呢?只需执行简单的数学运算就知道:04。需要随机地读取元素时,数组的效率很高,因为可以...

    3-软件课程设计补充知识-数组和链表 数组和链表.ppt

    3-软件课程设计补充知识-数组和链表 数组和链表.ppt

    数组和链表的时间复杂度 (1) 数组和链表.pdf

    数组和链表的时间复杂度 在计算机科学中,时间复杂度是衡量算法性能的重要指标之一。不同的数据结构在各种操作下的时间复杂度也各不相同。以数组和链表为例,我们可以看到它们在插入、删除、随机访问等操作中的时间...

    数组与链表不同

    1. 插入与删除:链表在插入和删除操作上表现优秀,只需要改变相邻节点的指针,时间复杂度为O(1),尤其当操作发生在链表头部或尾部时,无需移动其他元素。 2. 内存利用率:链表可以在内存不连续的地方存储节点,只要...

    数组和链表的对比分析 数组和链表.docx

    ### 数组与链表的对比分析 #### 引言 数据结构是计算机科学中的一个重要概念,它涉及到如何组织、管理和存储数据,以便于高效地访问和修改数据。本篇文章主要探讨的是两种基本的数据结构——数组与链表。通过对比...

    c语言数组与链表转化-分别用数组和链表实现堆栈(C语言版)(转) 数组和链表.pdf

    "c语言数组与链表转化-分别用数组和链表实现堆栈(C语言版)" 本资源主要讲解了使用C语言实现堆栈的两种方法:使用数组和链表。堆栈是一种常用的数据结构,它可以用来实现递归算法、表达式求值、语法分析等。 第一...

    数组、链表、队列、栈的区别和联系 数组和链表.pdf

    数组、链表、队列、栈的区别和联系 在数据结构中,数组、链表、队列、栈是四种常用的数据结构,它们之间有着紧密的联系,但同时也存在着许多区别。本文将详细介绍数组、链表、队列、栈的区别和联系。 一、数组和...

    数组和链表的使用场景 数组和链表.pdf

    数组和链表的使用场景 在计算机科学中,数组和链表是两种基本的数据结构,它们都是线性表的实现方式,但它们有着不同的存储结构和访问方式,从而导致不同的使用场景。 数组是一种连续存储的数据结构,即在内存中...

    C++——数组模拟链表

    "C++数组模拟链表" C++中的链表是数据结构中非常重要的一部分,而在链表中,我们可以使用数组来模拟链表的结构。今天,我们将讨论如何使用数组来模拟链表,并实现链表的插入和遍历操作。 首先,我们需要了解链表的...

    Java用数组和链表的方式简单实现HashMap的增删改功能 数组和链表.pdf

    在Java中,HashMap的实现方式有多种,本文将介绍使用数组和链表的方式简单实现HashMap的增删改功能。 HashMap的数据结构 HashMap的数据结构主要由三个部分组成:数组、链表和红黑树。数组用于存储键值对,链表用于...

    Java集合,HashMap底层实现和原理(1.7数组+链表与1.8+的数组+链表+红黑树) 数组和链表.pdf

    Java集合,HashMap底层实现和原理(1.7数组+链表与1.8+的数组+链表+红黑树) 在Java集合中,HashMap是一个常用的数据结构,它基于Map接口实现,元素以键值对的方式存储,并且允许使用null键和null值。由于key不允许...

    数组与链表深度解析:性能、应用与选择策略

    数组和链表作为两种基础的线性数据结构,在实际编程中有着广泛的应用。本文将深入探讨数组和链表的内部机制、性能特点、适用场景以及它们在现代编程语言中的实现方式。 数组和链表各有优势和局限,它们在不同的应用...

    c语言链表数组-c语言手写单链表实现,数组和链表结构对比小结和个人理解 数组和链表.pdf

    今天,我们将深入探讨C语言中链表数组的实现和数组与链表结构的对比,并结合个人理解和实践经验来分析它们的优缺。 一、链表数组的实现 链表是一种常见的数据结构,它由多个节点组成,每个节点包含数据域和指针域...

    数组和链表实现队列

    本话题主要探讨了两种常用的数据结构——数组和链表——在实现队列这一线性数据结构时的应用。队列是一种先进先出(First In First Out, FIFO)的数据结构,它的主要操作包括入队(enqueue)、出队(dequeue)以及...

    数组和链表的区别浅析 数组和链表.pdf

    数组和链表的区别浅析 数组和链表.pdf

Global site tag (gtag.js) - Google Analytics