PS:很多研究生同学都在说,数据结构,特别是一些复杂的数据结构,在“我们”写应用程序的时候几乎用不到。我曾深以为然。
这里仅举最简单的例子,说明使用数据结构的必要性,具体如何选择合适的数据结构,怎么实现,我还没有想好。
1.对一维信号(如心电图,语音信号等)进行处理,其中涉及到对信号分段,这些段分为重要段(ImpSec)和不重要段(UnImpSec),各段长度可能不同。
2.需要对重要段和不重要段分别进行处理,然后将处理结果进行连接、组合成新的信号便于存储或传输。这些操作具体来说,会涉及到求各段信号的长度,各段信号在原信号中的位置/索引,各段处理后信号与原信号中位置/索引的关系,处理后信号在新信号中的位置/索引……
3.显然将处理后的各信号段连接成新的一维信号,然后在连接的过程中记录这些“长度”、“索引”信息是比较节省存储空间的做法。因为作为结果只是存储了一维信号,以及各段在新信号中的索引这两个“数组”,而中间需要用到的其他各种信息(变量)在程序运行完之后就销毁了。
4.上面真的是最节省存储空间的做法吗?或者说考虑到时间复杂度等因素,3是最可取的吗?--由于需要反复对各段在原信号、新信号中的位置/索引进行操作,而我们都知道数组中对位置/索引的操作是很不方便的(毋宁用链表),所以需要引进新的数据结构,来表征各种处理对象,甚至存储结果,一来便于计算,二来节省存储空间。
上面只是最初级的设想,具体用什么还不了然,但引入新的数据结构来代替“原始的数组”操作,这个需求是毋庸置疑的。