链表的长度是可变的,数组的长度是固定的,在申请数组的长度时就已经在内存中开辟了若干个空间。如果没有引用 ArrayList 时,数组申请的空间永远是我们在估计了数据的大小后才执行,所以在后期维护中也相当麻烦。
链表不会根据有序位置存储,进行插入数据元素时,可以用指针来充分利用内存空间。数组是有序存储的,如果想充分利用内存的空间就只能选择顺序存储,而且需要在不取数据、不删除数据的情况下才能实现。
数组的案例
基于数组,计算平均值
字符串 由 n 个字符组成的一个有序整体( n >= 0 ) 对比字符串和线性表
字符串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。
字符串的基本操作和线性表有很大差别:
在线性表的基本操作中,大多以“单个元素”作为操作对象;
在字符串的基本操作中,通常以“串的整体”作为操作对象;
字符串的增删操作和数组很像,复杂度也与之一样。但字符串的查找操作就复杂多了,它是参加面试、笔试常常被考察的内容。
特殊的字符串
空串,指含有零个字符的串。例如,s = "",书面中也可以直接用 Ø 表示。
空格串,只包含空格的串。它和空串是不一样的,空格串中是有内容的,只不过包含的是空格,且空格串中可以包含多个空格。例如,s = " ",就是包含了 3 个空格的字符串。
子串,串中任意连续字符组成的字符串叫作该串的子串。
原串通常也称为主串。
字符串的存储结构与线性表相同,也有顺序存储和链式存储两种