注:这是一个自己的探索性的研究,自己对数据结构这门课本身掌握的不是非常扎实,纰漏之处敬请评论指正:
最近写论文要用到交叉口元胞矩阵的建模,需求是这样的。给定矩阵的x,y坐标,求该坐标上的元胞网格。
共有几种运算。
1 判断矩阵(x,y)处 有没有元胞
2 获取(x,y)处的矩阵元素
3 移动元素在矩阵中的位置,从(xO,yO)移动到(xD,yD)
4 遍历矩阵中的元素并且进行处理
个人觉得十字链表太恶心,添加删除节点,内部的数据如指针等都要自己维护,烦得很。三元组的三个域也很有意思(x,y,你想要存储的数据),多个三元组本身还有一个存储的问题,当然最简单的就是线形存贮。利用三元素数组进行矩阵记录,本身又引入了三元组数组的管理问题。二维数组的方式简单直观,二维数组存贮稀疏矩阵空间浪费严重。这里,我是使用哈希表做矩阵的存贮结构。
插播个广告:
个人认为数据结构这门课,不管是什么语言实现,引入新的数据结构都使用最原始的数据类型如int char 进行重建,各种数据结构类型之间并没有很好相互利用,有点每次都从头开始的意思。而且不鼓励思考,直接给出实现方法的内容安排,也是容易让人认为这种数据结构的实现就书本上的几种方法。这不利于我们工程研究中设计出更好的更快速的数据结构。换句话说,这门课没有给它的学习者留下想象和提高的空间,直接给出答案,缺乏对学习者自身的思考创新的鼓励。