不管是JS中还是C语言中都有链表和数组的概念,这应该是计算机里面涉及到的数据结构与概念
只不过JS是一种弱语言,它只有数组这一种数据结构是JS内置的,JS也可以通过自定义类的方式创建链表,C语言是一门强语言类型,涉及到指针和内存的地址,也就是操作硬件方面的内容,所以要操作内存空间,能直接操作计算机的内存空间也就只有C语言和C++了(C#不知道)
数组的概念:
数组是一种线性数据结构,它由相同类型的元素组成,并按照一定顺序存储在内存中。数组的特点是具有固定的大小,即在创建数组时需要指定数组的大小。数组可以通过索引访问和修改元素,索引从0开始,最大索引为数组大小减1。数组的优点是随机访问元素非常高效,但缺点是插入和删除操作比较低效,需要移动其他元素。(这是Chatgpt 的解释,怎么样是不是不讲人话)
图1 数组结构图(图片来自与《算法图解》)
数组就像在电影院看电影,一排同学按照序号坐在第1排的位置,重点是我们用索引(下标)访问数组里面的元素,数组的索引从0开始,优点当然是因为它的数据结构是按顺序来的,访问这种数据结构当然比较快啦。就像按序号找人,每个人对应一个序号,只要找到序号就能找到这个人,而且这几个人还在同一个位置,缺点也很明显,就是不能随意去修改它们的位置
上图就是我对数组的理解
链表的概念:
链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的特点是每个节点在内存中可以分散存储,节点之间通过指针连接。链表的大小可以动态增长和减小,不需要预先指定大小。链表的优点是插入和删除操作比较高效,不需要移动其他节点,但缺点是访问元素需要从头开始遍历链表。
链表的概念就像一组同学去电影院去看电影 ,同学不按顺序坐,只要看到有空位就坐上去直到电影院的座位坐满为止。
优点只要电脑有内存就能放下数据,缺点是访问效率比较低因为它是随意分配的。它需要指针也就是所谓的定位才能找到位置