C语言指针链表还是数组哪一个更香

2023-3-27 来源:不详 浏览次数:

点状白癜风发病要多久才能治愈 http://m.39.net/baidianfeng/a_5212241.html

说起链表,第一反应:链表是一种数据类型!它可以用来存储同种类型多个批量数据。

有了这种认知,很容易去联想到数组,它也是一种数据类型,也可以用来存储同种类型的批量数据。初学者往往对数组的印象比较好,比如想要存一批整数,就可以定义一个一维整形数组,用数组存储,简单直观且方便。

那为什么要引入链表呢?

这里主要的原因是数组它是有缺点的:首先,数组是采用静态分配的方式。

什么意思呢?就是说你想在程序中用数组,就要先定义数组,写一个说明语句放在执行语句之前。我们的变量都是先定义后使用的嘛,在这个说明语句的部分,数组的长度已经被判死刑了。

在后续操作中,我们既无法对已分配的存储单元进行扩充或者更变,也不能通过编程的方式对没有充分利用的资源进行回收,这就是所谓的静态分配。

有同学可能有疑问,静态就静态呗,有什么问题吗?问题在于,在某些情况下,你无法确定数据的大致规模,或者数据规模需要针对不同用户进行相应的调整。

比如说,对于一个学生管理系统,采用数组的方式存储数据的话:如果用户是一个班级,个单元就够用;对于一个院系,可能要0个单元;对于几个院系,可能要上万个单元。

那么你想让自己的系统能够同时满足这些用户的需求,就理应采用最大的规模,也就是应该在说明语句中把数组的规模做到一万。而只要定义了变量,系统就会分配存储单元。

实际应用中,哪怕只用到其中的1个单元,系统也会分配一万的单元,多余的单元程序不会使用到,别的变量也没办法用,属于典型的占着什么不什么。

数组的另外一个缺陷是:必须使用连续的内存单元。对于一个领着个游客住旅馆的导游,如果采用数组方式住店,假如旅店的空房间数量远远多于个,但任何一个地方都没有连续的个房间。

那就比较尴尬了,老板娘只好提示你系统内存空间不够,不让你住店,也不让你的程序执行。

那么将来我们引入链表就可以巧妙地解决这两个问题:首先我们的链表不是在执行语句运行前提前定义的,而是可以按照用户的需求动态分配,更加灵活高效;其次,采用链表方式也需要内存单元,但是不再需要连续的内存。

那讨论到这里的话:链表这么完美,数组全是缺点,以后全部用链表不就好了吗?

链表也有缺点。比如说它定义形式更加复杂,给编程者有一定的学习门槛;无法直接定位链表中某一个元素,而只能通过前导依次遍历会降低访问效率等等。

在开发实践中,到底应该使用哪种数据类型,应该根据实际需要灵活变动,不能而在某一种方式上钻牛角尖。

对于更多的开发人员而言,我们对自己的定位应该是语言的使用者,而非语言的研究者。所以编程实践中,如何采用合理、高效有用的方式才是我们真正需要考虑的东西,而非去一味追求刁钻的技巧技法,千万不要陷入“能力的怪圈”。

感谢阅读,学习使人强大。

转载请注明:
http://www.weichiyen.com/szwh/13218.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: