这几天我们老师让我们用Matlab做作业,需要实现一个链表。
昨天上google搜“matlab 实现链表”,无果,有意思的还有好多乱七八糟的人说Matlab有C/C++的接口,调用C/C++实现的链表就好了。
又搜"matlab linked list",哗啦哗啦,好多用matlab实现链表的内容,尤其是在Matlab帮助中就有一个例子链表的程序。
于是,我有点小感慨 -- 差距。
本着,分享的原则,我把我用Matlab实现的链表分享出来,这样搜关键词“matlab 实现链表”的时候就能搜到结果了。
================================
用Matlab实现链表,的预备知识是:知道Matlab可以面向对象编程。在Matlab帮助中有详细介绍。
dlnode.m 定义了链表中的节点的类
昨天上google搜“matlab 实现链表”,无果,有意思的还有好多乱七八糟的人说Matlab有C/C++的接口,调用C/C++实现的链表就好了。
又搜"matlab linked list",哗啦哗啦,好多用matlab实现链表的内容,尤其是在Matlab帮助中就有一个例子链表的程序。
于是,我有点小感慨 -- 差距。
本着,分享的原则,我把我用Matlab实现的链表分享出来,这样搜关键词“matlab 实现链表”的时候就能搜到结果了。
================================
用Matlab实现链表,的预备知识是:知道Matlab可以面向对象编程。在Matlab帮助中有详细介绍。
dlnode.m 定义了链表中的节点的类
- classdef dlnode < handle
- % DLNODE A class to represent a doubly-linked list node.
- % Multiple dlnode objects may be linked together to create linked listes.
- % Each node contains a piece of data and provides access to the next
- % and previous nodes.
- properties
- Data
- end
- properties(SetAccess = private)
- Next
- Prev
- end
- methods
- function node = dlnode(Data)
- % DLNODE Constructs a dlnode object.
- if nargin > 0
- node.Data = Data;
- end
- end
- function insertAfter(newNode, nodeBefore)
- % insertAfter Inserts newNode after nodeBefore.
- disconnect(newNode);
- newNode.Next = nodeBefore.Next;
- newNode.Prev = nodeBefore;
- if ~isempty(nodeBefore.Next)
- nodeBefore.Next.Prev = newNode;
- end
- nodeBefore.Next = newNode;
- end
- function insertBefore(newNode, nodeAfter)
- % insertBefore Ins