一种基于结构化语言的链表管理系统及方法

文档序号:6578837阅读:241来源:国知局
专利名称:一种基于结构化语言的链表管理系统及方法
技术领域
本发明涉及结构化语言编程技术,尤其涉及一种基于结构化语言的链表管 理系统及方法。
背景技术
在软件开发中,链表根据需要动态分配内存空间,是一种动态地进行存储 分配的结构,图1是一种典型的双向链表结构示意图,如图l所示,该双向链
表有n个节点,节点0是链表的头部,节点n是链表的尾部,这两个节点不用 来存储数据,只用来标识链表的起止位置,中间n-2个节点可以用来存储数据。 每个节点具有三个属性数据、上一个节点指针和下一个节点指针,其中,数
据就是链表管理的数据;上一个节点指针存放着与该节点前面相邻的节点的内 存地址,对于节点0来说,该地址为空值;下一个节点指针存放着与该节点后 面相邻的节点的内存地址,对于节点n来说,该地址为空值。
目前,面向对象语言提供了这些链表的操作方法和参考实现,但是在结构 化语言中,没有一种统一的处理系统来实现链表操作。软件开发人员必须自己 实现与自己业务相关的链表操作,如链表创建、链表删除以及节点添加、节点 删除、节点更新、节点查询等。
由于在不同项目中4吏用链表,需要有各自的管理代码,所以,现有结构化 语言实现链表管理时,重复代码多,不仅占用了代码空间,而且可维护性及扩 展性比较差,此外,大量的链表管理代码延长了软件开发时间,降低了软件开 发效率,从而使得链表的使用成本变大,软件开发效率低。

发明内容
有鉴于此,本发明的主要目的在于提供一种基于结构化语言的链表管理系统及方法,能够简化代码,提高代码可维护性及扩展性,且提高软件开发效率。 为达到上述目的,本发明的技术方案是这样实现的
一种基于结构化语言的链表管理系统,包括环境模块、链表管理模块、
存储模块,其中,
环境模块用于在操作系统启动时,确定与链表处理相关的接口 ; 链表管理模块,用于根据来自客户程序的链表处理请求,调用环境模块中 的接口和/或存储模块中的节点比较接口 ,对存储模块中存储的链表进行处理; 存储模块,用于存储链表,以及链表的节点比较接口。 一种基于结构化语言的链表管理方法,包括
操作系统启动时,确定与链表处理相关的接口;
客户程序运行过程中需要进行链表处理时,客户程序将链表处理请求发送 至链表管理模块;
链表管理模块根据所接收的链表处理请求,调用所述与链表处理相关的接 口和/或节点比较接口对链表进行处理。
所述与链表处理相关的接口包括内存分配接口、信号量分配接口;
所述链表处理请求为链表创建请求,其携带的链表创建参数包括链表类 型,节点数据、节点比较接口;
所述链表管理模块对链表进行处理为
调用内存分配接口进行内存分配,并根据链表创建参数中携带的链表创建 参数创建链表;
调用信号量分配接口分配关于所创建链表的信号量并存储; 为所创建的链表分配链表ID并存储,并将所述链表ID返回客户程序。 所述与链表处理相关的接口包括内存回收接口、信号量回收接口; 所述链表处理请求为链表删除请求,其携带的链表删除参数包括需要删 除的《连表ID;
所述链表管理模块对链表进行处理为 根据链表删除参数中的链表ID查找需要删除的链表;调用内存回收接口释放所述链表及链表中节点的内存空间,并调用信号量 回收接口回收所删除链表对应的信号量; 向客户程序返回链表删除成功消息。
所述与链表处理相关的接口包括内存分配接口、信号量占有接口、信号 量释放接口;
所述链表处理请求为节点创建请求,其携带的节点创建参数包括链表ID 和节点数据,其中,所述节点数据包括节点数据数值和唯一标识该数据的节点 数据标识;
所述链表管理模块对链表进行处理为
查找节点创建参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;
判断所述链表中,需创建的节点是否已存在,需创建的节点已存在,向客 户程序返回节点已存在消息,调用信号量释放接口,释放所述链表的信号量; 需创建的节点不存在,调用内存分配接口创建节点,并向客户程序返回所创建 节点的节点指针,调用信号量释放接口,释放所述链表的信号量。
所述判断需创建的节点是否已存在为调用节点创建参数中链表ID所对应 链表的节点比较接口 ,判断所述链表中是否存在具有所述节点创建参数中的节 点数据标识的节点。
所述与链表处理相关的接口包括信号量占有接口、信号量释放接口;
所述链表处理请求为节点查询请求,其携带的节点查询参数包括链表ID、 含有节点数据标识的节点数据;
所述链表管理模块对链表进行处理为
查找节点查询参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;
调用所述链表的节点比较接口查询节点数据标识与节点查询与节点查询参 数中携带的含有节点数据标识的节点数据所对应的节点,并返回所述节点的节 点指针至客户程序;调用信号量释放接口,释放所述链表的信号量。
所述与链表处理相关的接口包括信号量占有接口、信号量释放接口;
所述链表处理请求为节点更新请求,其携带的节点更新参数包括链表ID
和需要更新的节点数据,其中,所述节点数据具体包括需更新的节点数据数值
和需更新节点的节点数据标识;
所述链表管理模块对链表进行处理为
查找节点更新参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;
在所述链表中查找需要更新的节点,并将节点更新参数中需要更新的节点 数据更新至所述需要更新的节点;
向客户程序返回更新成功消息,并调用信号量释放接口,释放所述链表的
信号量。
所述与链表处理相关的接口包括内存回收接口、信号量占有接口、信号 量释放接口;
所述链表处理请求为节点删除请求,其携带的节点删除参数包括链表ID、 需要删除节点的节点数据标识;
所述链表管理模块对链表进行处理为
查找节点删除参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;
在所述链表中查找需要删除的节点;
调用内存回收接口删除所述需要删除的节点,并向客户程序返回删除成功 消息,调用信号量释放接口,释放所述链表的信号量。
所述删除需要删除的节点为需要删除的节点不是头节点或者尾节点,将 所述需要删除的节点前面的节点和后面的节点的指针连接起来,再调用内存回 收接口回收需要删除的节点对应的内存;需要删除的节点是头节点或者尾节点, 直接回收所述需要删除的节点对应的内存。
本发明基于结构化语言的链表管理系统及方法。在系统初始化时,根据操作系统确定与链表管理相关的接口 ,在进行链表处理时,调用相应的接口,并 结合链表处理参数便可实现对链表的处理。所以,本发明基于结构化语言的链 表管理系统及方法,根据操作系统确定与链表管理相关的接口,在不同项目中, 通过调用相应的接口,便可按照设定的处理流程实现链表管理,不需要分别编 写代码实现链表管理,从而,对于大规模的软件项目开发,本发明能够明显简 化代码、提高代码可维护性和扩展性,从而提高软件开发效率。


图1为一种典型的双向链表结构示意图2为本发明基于结构化语言的链表管理系统结构图; 图3为本发明基于结构化语言的链表管理方法流程图; 图4为本发明进行链表创建时的方法流程图; 图5为本发明进行链表删除时的方法流程图; 图6为本发明进行节点创建时的方法流程图; 图7为本发明进行节点查询时的方法流程图; 图8为本发明进行节点更新时的方法流程图; 图9为本发明进行节点删除时的方法流程图。
具体实施例方式
本发明的基本思想是在系统初始化时,根据操作系统确定与链表管理相 关的接口,在进行链表处理时,调用相应的接口,并结合链表处理参数便可实 现对链表的处理。
下面结合附图对技术方案的实施作进一步的详细描述。
图2为本发明基于结构化语言的链表管理系统结构图,如图2所示,本发 明基于结构化语言的链表管理系统一般包括环境模块21、链表管理模块22、 存储模块23,其中,
环境模块21用于在操作系统启动时,根据所述启动的操作系统,确定与链表处理相关的接口;
链表管理模块22,用于根据来自客户程序的链表处理请求,调用环境模块
21中的接口和/或存储模块23中存储的节点比较接口,对存储模块23中存储的
链表进行处理;
存储模块23,用于存储链表,以及链表的节点比较接口。 由于链表中节点存储的数据可以是标准类型,也可以是用户自定义的复杂
类型,所以,链表的节点比较接口不一定相同,每个链表对应各自的节点比较
接口,链表的节点比较接口作为链表的参数之一,在链表创建时被指定。
图3为本发明基于结构化语言的链表管理方法流程图,如图3所示,本发
明基于结构化语言的链表管理方法一般包括以下步骤
步骤31:操作系统启动时,确定与链表处理相关的接口。
这里,与链表处理相关的接口一般包括内存分配接口、内存回收接口、
信号量分配接口、信号量占有接口、信号量释放接口、信号量回收接口等。在
不同的操作系统中,这些接口也各不相同,必须首先根据操作系统确定这些接
口,才能够执行本方法的后续步骤。
步骤32:客户程序运行过程中需要进行链表处理。
这里,客户程序运行过程中的链表处理可以是链表创建、链表删除、节点 创建、节点查询、节点更新、节点删除等操作。
步骤33:客户程序将链表处理请求发送至链表管理模块。
这里,链表处理请求携带相应的链表处理参数。例如,
链表处理请求为链表创建请求时,携带的链表创建参数一般包括链表类 型,节点数据、节点比较接口。其中,链表类型可以是单向链表、双向链表或 环形链表;节点数据具体包括节点数据数值和唯一标识该数据的节点数据标识。
链表处理请求为链表删除请求时,携带的链表删除参数一般包括需要删除 的链表ID。
链表处理请求为节点创建请求时,携带的节点创建参数一般包括链表ID 和节点数据。链表处理请求为节点查询请求时,携带的节点查询参数一般包括链表ID、
含有节点数据标识的节点数据。
链表处理请求为节点更新请求时,携带的节点更新参数一般包括链表ID 和需要更新的节点数据。
链表处理请求为节点删除请求时,携带的节点删除参数一般包括链表ID、 节点数据标识。
步骤34:链表管理模块根据所接收的链表处理请求,调用步骤31中确定 的相应的接口对链表进行处理。
图4为本发明进行链表创建时的方法流程图,如图4所示,本发明进行链 表创建时, 一般包括以下步骤
步骤41;客户程序向链表管理模块发送链表创建请求。
这里,链表创建请求携带的链表创建参数一般包括链表类型,节点数据、 节点比较接口 。
步骤42:链表管理模块调用内存分配接口在存储模块中进行内存分配,并
根据链表创建请求中携带的链表创建参数创建链表。
链表管理模块具体调用环境模块中确定的内存分配接口进行内存分配。 步骤43:链表管理模块调用信号量分配接口分配关于所创建链表的信号量
并存储。
链表管理模块具体调用环境模块中确定的信号量分配接口进行信号量分 配,这里,为链表创建信号量是为了保护对该链表的访问,具体的,对链表中 的节点进行操作时,通过占有该链表的信号量来屏蔽其他应用对该链表的访问, 在对链表中的节点」燥作完成后,再释放该链表的信号量,允许其他应用对链表 进行访问。
步骤44:链表管理模块为所创建的链表分配链表ID并存储,之后将所述 链表ID返回客户程序。
这里,可以通过随;机分配、递增分配等多种方式分配4连表ID,只要保证一 个链表ID唯一标识一个链表即可,链表ID作为链表的参数之一存储于存储模块中。
图5为本发明进行链表删除时的方法流程图,如图5所示,本发明进行链
表删除时, 一般包括以下步骤
步骤51:客户程序向链表管理模块发送链表删除请求。
所述链表删除请求携带的链表删除参数一般包括需要删除的链表ID。
步骤52:链表管理模块根据链表删除参数中的链表TD查找需要删除的链表。
这里,链表管理模块具体在存储模块中进行查找。
步骤53:链表管理模块调用内存回收接口回收所述链表以及其中节点的内 存空间,并调用信号量回收接口释放所删除链表对应的信号量。
链表管理模块具体调用环境模块中确定的内存回收接口和信号量回收接口 对存储模块中的链表进行删除。
步骤54:链表管理模块向客户程序返回链表删除成功消息。
图6为本发明进行节点创建时的方法流程图,如图6所示,本发明进行节 点创建时, 一般包括以下步骤
步骤61:客户程序向链表管理模块发送节点创建请求。
这里,节点创建请求瑪带的节点创建参数一般包括链表ID和节点数据, 其中,节点数据具体包括节点数据数值和唯一标识该数据的节点数据标识。
步骤62:链表管理模块查找节点创建参数中链表ID对应的链表。
这里,链表管理^f莫块具体在存储模块中进行查找。
步骤63:链表管理模块调用信号量占有接口,占有所述链表的信号量。 链表管理模块具体调用环境模块中确定的信号量占有接口占有链表的信号量。
步骤64:链表管理模块判断所述链表中,需创建的节点是否已存在,如果 是,执行步骤65;否则,执行步骤66。
这里,具体通过调用节点创建参数中链表ID所对应链表的节点比较接口 , 判断所述链表中是否存在具有步骤61所述节点数据标识的节点,从而判断需创建的节点是否已存在,链表的节点比较接口在创建该链表时已被指定,直接调 用存储单元中的节点比较接口即可。
步骤65:链表管理模块向客户程序返回节点已存在消息,转到步骤68。 步骤66:链表管理模块调用内存分配接口在存储模块中分配内存,并填充 节点创建参^:中的节点数据至所分配的内存,即完成节点创建。
步骤67:链表管理模块向客户程序返回所创建节点的节点指针,即内存地址。
步骤68:链表管理模块调用信号量释放接口,释放所述链表的信号量,流 程结束。
图7为本发明进行节点查询时的方法流程图,如图7所示,本发明进行节 点查询时, 一般包括以下步骤
步骤71:客户程序向链表管理模块发送节点查询请求。
这里,节点查询请求携带的节点查询参数一般包括链表ID、含有节点数 据标识的节点数据。
步骤72:链表管理模块查找节点查询参数中链表ID对应的链表。
这里,链表管理模块具体在存储模块中进行查找。
步骤73:链表管理模块调用信号量占有接口,占有所述链表的信号量。
步骤74:链表管理模块判断所述链表中,需要查询的节点是否存在,如果 是,执行步骤75;否则,转到步骤76。
这里,判断需要查询的节点是否存在为调用所述链表的节点比较接口遍 历所述链表,判断是否存在节点查询参数中携带的含有节点数据标识的节点数 据所对应的节点。
步骤75:链表管理模块返回所述节点的节点指针至客户程序,转到步骤77。 步骤76:链表管理模块向客户程序返回查询失败消息。 步骤77:链表管理模块调用信号量释放接口,释放所述链表的信号量,流 程结束。
图8为本发明进行节点更新时的方法流程图,如图8所示,本发明进行节点更新时, 一般包括以下步骤
步骤81:客户程序向链表管理模块发送节点更新请求。
这里,节点更新请求携带的节点更新参数一般包括链表ID和需要更新的
节点数据,其中,节点数据具体包括需更新的节点数据数值和需更新节点的节
点数据标识。
步骤82:链表管理模块查找节点更新参数中链表ID对应的链表。 这里,链表管理模块具体在存储模块中进行查找。 步骤83:链表管理模块调用信号量占有接口,占有所述链表的信号量。 步骤84:链表管理模块在所述链表中查找需要更新的节点。 这里,具体通过调用链表的节点比较接口 ,查找节点数据标识与步骤81 所述需更新节点的节点数据标识一致的节点。
步骤85:将节点更新参数中需要更新的节点数据更新至所述需要更新的节点。
这里,更新数据即以需更新的节点数据数值替换存储模块中需更新节点之 前的节点数据数值。
步骤86:链表管理模块向客户程序返回更新成功消息,并调用信号量释放 接口,释放所述链表的信号量。
图9为本发明进行节点删除时的方法流程图,如图9所示,本发明进行节 点删除时, 一般包括以下步骤
步骤91:客户程序向链表管理模块发送节点删除请求。
这里,节点删除请求携带的节点删除参数一般包括链表ID、需要删除节 点的含有节点数据标识的节点数据。
步骤92:链表管理模块查找节点删除参数中链表ID对应的链表。
这里,链表管理模块具体在存储模块中进行查找。
步骤93:链表管理模块调用信号量占有接口,占有所述链表的信号量。
步骤94:链表管理模块在所述链表中查找需要删除的节点。
这里,具体通过调用链表的节点比较接口,查找步骤92所述链表中节点数据标识与步骤91所述需要删除节点的节点数据标识一致的节点,即为需要删除 的节点。
步骤95:链表管理模块删除存储模块中的所述节点,并向客户程序返回删 除成功消息。
删除存储模块中链表的节点具体为如果需要删除的节点不是头节点或者 尾节点,则将该节点前面的节点和后面的节点的指针连接起来,之后调用内存 回收接口回收需要删除的节点对应的内存。例如,如果节点b的上一个节点指 针指向节点a (即节点a的下一个节点指针指向节点b),下一个节点指针指 向节点c (即节点c的上一个节点指针指向节点b),那么,删除节点b时, 修改节点a的下一个节点指针指向节点c、节点c的上一个节点指针指向节点 a,之后调用内存回收接口回收节点b对应的内存;如果需要删除的节点是头 节点或者尾节点,则直接回收所述需要删除的节点对应的内存,不需要做节点 连接。
步骤96:链表管理模块调用信号量释放接口,释放所述链表的信号量. 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种基于结构化语言的链表管理系统,其特征在于,该系统包括环境模块、链表管理模块、存储模块,其中,环境模块用于在操作系统启动时,确定与链表处理相关的接口;链表管理模块,用于根据来自客户程序的链表处理请求,调用环境模块中的接口和/或存储模块中的节点比较接口,对存储模块中存储的链表进行处理;存储模块,用于存储链表,以及链表的节点比较接口。
2、 一种基于结构化语言的链表管理方法,其特征在于,该方法包括 操作系统启动时,确定与链表处理相关的接口;客户程序运行过程中需要进行链表处理时,客户程序将链表处理请求发送 至链表管理模块;链表管理模块根据所接收的链表处理请求,调用所述与链表处理相关的接 口和/或节点比较接口对链表进行处理。
3、 根据权利要求2所述的链表管理方法,其特征在于,所述与链表处理相 关的接口包括内存分配接口 、信号量分配接口;所述链表处理请求为链表创建请求,其携带的链表创建参数包括链表类 型,节点lt据、节点比较4妻口;所述链表管理模块对链表进行处理为调用内存分配接口进行内存分配,并根据链表创建参数中携带的链表创建 参数创建链表;调用信号量分配接口分配关于所创建链表的信号量并存储; 为所创建的链表分配链表ID并存储,并将所述链表ID返回客户程序。
4、 根据权利要求2所述的链表管理方法,其特征在于,所述与链表处理相 关的接口包括内存回收接口、信号量回收接口;所述链表处理请求为链表删除请求,其携带的链表删除参数包括需要删 除的链表ID;所述链表管理模块对链表进行处理为根据链表删除参数中的链表ID查找需要删除的链表;调用内存回收接口释放所述链表及链表中节点的内存空间,并调用信号量回收接口回收所删除链表对应的信号量; 向客户程序返回链表删除成功消息。
5、 根据权利要求2所述的链表管理方法,其特征在于,所述与链表处理相 关的接口包括内存分配接口、信号量占有接口、信号量释放接口;所述链表处理请求为节点创建请求,其携带的节点创建参数包括链表ID 和节点数据,其中,所述节点数据包括节点数据数值和唯一标识该数据的节点 数据标识;所述链表管理模块对链表进行处理为查找节点创建参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;判断所述链表中,需创建的节点是否已存在,需创建的节点已存在,向客 户程序返回节点已存在消息,调用信号量释放接口,释放所述链表的信号量; 需创建的节点不存在,调用内存分配接口创建节点,并向客户程序返回所创建 节点的节点指针,调用信号量释放接口,释放所述链表的信号量。
6、 根据权利要求5所迷的链表管理方法,其特征在于,所述判断需创建的 节点是否已存在为调用节点创建参数中链表ID所对应链表的节点比较接口 , 判断所述链表中是否存在具有所述节点创建参数中的节点数据标识的节点。
7、 冲艮据权利要求2所述的链表管理方法,其特征在于,所述与链表处理相 关的接口包括信号量占有接口、信号量释放接口;所述链表处理请求为节点查询请求,其携带的节点查询参数包括链表ID、 含有节点数据标识的节点数据;所述链表管理模块对链表进行处理为查找节点查询参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;调用所述链表的节点比较接口查询节点数据标识与节点查询与节点查询参 数中携带的含有节点数据标识的节点数据所对应的节点,并返回所述节点的节 点指针至客户程序;调用信号量释放接口,释放所述链表的信号量。
8、 根据权利要求2所述的链表管理方法,其特征在于,所述与链表处理相 关的接口包括信号量占有接口、信号量释放接口;所述链表处理请求为节点更新请求,其携带的节点更新参数包括链表ID 和需要更新的节点^:据,其中,所述节点数据具体包括需更新的节点数据数值 和需更新节点的节点数据标识;所述链表管理模块对链表进行处理为查找节点更新参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;在所述链表中查找需要更新的节点,并将节点更新参数中需要更新的节点 数据更新至所述需要更新的节点;向客户程序返回更新成功消息,并调用信号量释放接口,释放所述链表的信号量。
9、 根据权利要求2所述的链表管理方法,其特征在于,所述与链表处理相 关的接口包括内存回收接口、信号量占有接口、信号量释放接口;所述链表处理请求为节点删除请求,其携带的节点删除参数包括链表ID、 需要删除节点的节点数据标识;所述链表管理模块对链表进行处理为查找节点删除参数中链表ID对应的链表,调用信号量占有接口,占有所述 链表的信号量;在所述链表中查找需要删除的节点;调用内存回收接口删除所述需要删除的节点,并向客户程序返回删除成功 消息,调用信号量释放接口,释放所述链表的信号量。
10、 根据权利要求9所述的链表管理方法,其特征在于,所述删除需要删除的节点为需要删除的节点不是头节点或者尾节点,将所述需要删除的节点前面的节点和后面的节点的指针连接起来,再调用内存回收接口回收需要删除的节点对应的内存;需要删除的节点是头节点或者尾节点,直接回收所述需要 删除的节点对应的内存。
全文摘要
本发明公开一种基于结构化语言的链表管理系统,包括环境模块、链表管理模块、存储模块,其中,环境模块在操作系统启动时,确定与链表处理相关的接口;链表管理模块根据来自客户程序的链表处理请求,调用环境模块中的接口和/或存储模块中的比较接口,对存储模块中存储的链表进行处理。本发明还相应地公开一种基于结构化语言的链表管理方法,采用本发明,在不同项目中,通过调用相应的接口,便可按照设定的处理流程实现链表管理,不需要分别编写代码实现链表管理,从而能够明显简化代码、提高代码可维护性和扩展性,从而提高软件开发效率。
文档编号G06F12/02GK101582031SQ20091014912
公开日2009年11月18日 申请日期2009年6月16日 优先权日2009年6月16日
发明者曹登元 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1