在设计数据结构时,对于具有后进先出特点的系列数据会建立堆栈,但堆栈的最终实现还需要依赖数组或链表的编程机制。堆栈的抽象描述是逻辑设计,基于数组或链表机制进行的数据结构描述是物理设计。如果不能区分逻辑设计和物理设计,那么很多设计初学者最终看到的就只是数组或链表机制的运用,他们在将来的程序设计中就总是下意识地使用数组或链表来代替本来应该使用的堆栈,影响了最终程序的逻辑性。
比如,在图1-30的程序中,Store本质上是个堆栈,本可以简单定义为“Stack<Integer> store”,却因为过多考虑了存储结构的操纵而变成了图1-30的不必要复杂程序。
图1-30 区分逻辑设计与物理设计示例二
正因为未能区分逻辑设计和物理设计,所以在很多初学者的程序中,难觅堆栈、队列、矩阵、二叉树、图等本应在程序中经常出现的抽象数据类型,因为它们都被变相稀释为数组和链表的操纵代码了。
如果能够按照先逻辑设计后物理设计的方式,就能够清晰地定位数据结构的需要,提升最终物理代码的逻辑清晰性。