回 帖 发 新 帖 刷新版面

主题:[原创]matlab7.0版本中实现指链表,树等数据结构

似乎已经很久没来过这里了,一直都忙着美国数学建模,刚刚才结束,感觉结果不尽人意,但这种大型的比赛还是让我学到了很多,其中觉得最有用的就是这个在matlab7.0中实现指针的方法。指针对于实现数据结构而言是非常地重要的,可惜matlab却偏偏没设(2008a版本后就增加这个功能了,但08版本的实在太庞大,我机子上跑起来像头牛一样),于是我自己写了个静态链表建立的算法,包括建立初始化指针空间的函数,管理指针的函数(分配指针函数和释放指针的函数),整体上和c里的差不多。只是由于matlab函数只能传值传递参数的限制,操作起来略麻烦点稍有点不同。
建立初始化链表空间:

    [L,Maintain]=InitList(N,'a1','a2','a3',......);
例子:现在需要建立一树,每个节点包含数据域,左指针域,和右指针域,估计需要的空间是100
    [L,Maintain]=InitList(100,'Lcur','Rcur');
    这样就得到一个主链表空间L,和一个维护数组Maintain。
    L = 

    1x100 struct array with fields:
            data
            Lcur
            Rcur

分配指针:
    [P,Maintain]=Malloc(Maintain);
    这里P就是分配到的指针号,注意一定要返回Maintain这个维护数组(因为matlab函数只能传值传递参数的原因)。然后就可操作了,比如L(P).data=1,赋值操作,和c里的P->data=1差不多意思。

释放指针:
    Maintain = Free(Maintain,P)
    在这里P是要释放的指针
    
有了这几个函数,就能凑合的用了,构建小规模的链表,树等数据结构应该没问题,当然和真的指针还差很远,有点浪费内存。大家有什么好的建议提提吧。

回复列表 (共1个回复)

沙发

楼主的很牛,但是能否告诉我你写的函数呢?谢谢您

我来回复

您尚未登录,请登录后再回复。点此登录或注册