数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表) (2)

链表的长度是可变的,数组的长度是固定的,在申请数组的长度时就已经在内存中开辟了若干个空间。如果没有引用 ArrayList 时,数组申请的空间永远是我们在估计了数据的大小后才执行,所以在后期维护中也相当麻烦。

链表不会根据有序位置存储,进行插入数据元素时,可以用指针来充分利用内存空间。数组是有序存储的,如果想充分利用内存的空间就只能选择顺序存储,而且需要在不取数据、不删除数据的情况下才能实现。

数组的案例

基于数组,计算平均值

 

 

字符串 由 n 个字符组成的一个有序整体( n >= 0 ) 对比字符串和线性表

字符串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。

字符串的基本操作和线性表有很大差别:

在线性表的基本操作中,大多以“单个元素”作为操作对象;

在字符串的基本操作中,通常以“串的整体”作为操作对象;

字符串的增删操作和数组很像,复杂度也与之一样。但字符串的查找操作就复杂多了,它是参加面试、笔试常常被考察的内容。

特殊的字符串

空串,指含有零个字符的串。例如,s = "",书面中也可以直接用 Ø 表示。

空格串,只包含空格的串。它和空串是不一样的,空格串中是有内容的,只不过包含的是空格,且空格串中可以包含多个空格。例如,s = " ",就是包含了 3 个空格的字符串。

子串,串中任意连续字符组成的字符串叫作该串的子串。

原串通常也称为主串。

字符串的存储结构与线性表相同,也有顺序存储和链式存储两种

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssxwy.html