CN105279177A - 一种数据结构转换方法及装置 - Google Patents
一种数据结构转换方法及装置 Download PDFInfo
- Publication number
- CN105279177A CN105279177A CN201410314682.3A CN201410314682A CN105279177A CN 105279177 A CN105279177 A CN 105279177A CN 201410314682 A CN201410314682 A CN 201410314682A CN 105279177 A CN105279177 A CN 105279177A
- Authority
- CN
- China
- Prior art keywords
- data record
- data
- record
- querying condition
- tree construction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据结构转换方法及装置,依次选择一个数据记录作为当前数据记录,查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中,确定目标数据记录和当前数据记录的父子关系;根据所确定的父子关系,将各当前数据记录和目标数据记录转换为树结构的数据记录。应用本发明实施例,在进行数据结构转换的过程中,无需对数据进行入栈操作和出栈操作,节省了时间。同时,由于本发明不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,因此只需为相同的中间数据分配一块内存空间即可,节省了内存空间的占用。
Description
技术领域
本发明涉及数据转换技术领域,特别涉及一种数据结构转换方法及装置。
背景技术
数据库或文件中存储的数据记录集合中的多条数据记录被读取到内存中,通常以数组结构的方式进行存储。以数据结构存储的数据记录是无规律的,若对数据记录中的数据进行插入、排序、删除等操作,就必须移动大量的数据。
为了方便对数据记录中的数据进行插入、排序、删除等操作,常需要将无规律的数组结构的数据记录转换为有规律的树结构的数据记录。现有技术中,通常是采用递归算法的方式将数组结构存储的数据记录转换为树结构存储的数据记录。
采用递归算法的方式将数组结构存储的数据记录转换为树结构存储的数据记录的过程中,系统要为每一次递归所使用的中间数据(例如:参数、返回地址、局部变量等)分配不同的栈空间来存储。例如:执行第一次递归算法所使用的局部变量为:局部变量a和局部变量b,执行第二次递归算法所使用的局部变量同样为:局部变量a和局部变量b,则系统为执行第一次递归算法所使用的局部变量a分配第一内存空间,系统为执行第一次递归算法所使用的局部变量b分配第二内存空间,系统为执行第二次递归算法所使用的局部变量a分配第三内存空间,系统为执行第二次递归算法所使用的局部变量b分配第四内存空间。
可以看出,递归算法所使用的内存空间较多;同时,为上述数据分配栈空间需要花费一定的时间,数据出栈时也需要花费一定的时间,因此,现有采用递归算法进行数据结构转换的方案所耗费的时间也较多。
发明内容
本发明实施例的目的在于提供一种数据结构转换方法及装置,以减少转换过程中对内存空间的占用,并减少数据结构转换所花费的时间。
为达到上述目的,本发明实施例公开了一种数据结构转换方法,包括:
将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中,其中,所述数据记录在内存中以数组结构进行存储,每一条数据记录中至少包含有自身数据记录的标识和自身数据记录的父级数据记录的标识;
依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中,其中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,所述目标数据记录为除所述当前数据记录外的其他数据记录、且所述目标数据记录的父级数据记录的标识与所述当前数据记录的标识相同,如果查找到所述目标数据记录,则确定目标数据记录和当前数据记录的父子关系,其中,所确定的父子关系为:目标数据记录作为当前数据记录的子数据记录;
根据所确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录,其中,在转换过程中,任一当前数据记录所在节点为:该当前数据记录的子数据记录所在节点的父节点。
较佳的,所述每一条数据记录中还包含自身数据记录的同级顺序值,所述方法还包括:
获得父级数据记录标识相同的各个数据记录的同级顺序值;
根据获得的各个数据记录的同级顺序值,对树结构中的父级数据记录标识相同的各个数据记录进行排序。
较佳的,所述方法还包括:
获得数据记录的查询条件;
按照树结构的层级关系,依次选择树结构中的一层数据记录中的一个数据记录作为当前数据记录,判断当前数据记录是否满足所述查询条件,如果满足,则获得当前数据记录,将所获得的当前数据记录作为查询结果输出。
较佳的,所述方法还包括:
获得数据记录的查询条件;
根据预设的查询条件与数据记录在树结构中层次深度的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的层次深度;
在树结构的所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录。
较佳的,所述方法还包括:
获得数据记录的查询条件;
根据预设的查询条件与数据记录在树结构中路径的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的路径;
根据所确定的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录。
为达到上述目的,本发明实施例公开了一种数据结构转换装置,包括:数据记录读取模块、目标数据记录查找模块、父子关系确定模块和转换模块,
数据记录读取模块,用于将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中,其中,所述数据记录在内存中以数组结构进行存储,每一条数据记录中至少包含有自身数据记录的标识和自身数据记录的父级数据记录的标识;
目标数据记录查找模块,用于依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中,其中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,所述目标数据记录为除所述当前数据记录外的其他数据记录、且所述目标数据记录的父级数据记录的标识与所述当前数据记录的标识相同;
父子关系确定模块,用于在所述目标数据记录查找模块查找到所述目标数据记录时,确定目标数据记录和当前数据记录的父子关系,其中,所确定的父子关系为:目标数据记录作为当前数据记录的子数据记录;
转换模块,用于根据所述父子关系确定模块确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录,其中,在转换过程中,任一当前数据记录所在节点为:该当前数据记录的子数据记录所在节点的父节点。
较佳的,所述每一条数据记录中还包含自身数据记录的同级顺序值,所述装置还包括:
同级顺序值获得模块,用于获得父级数据记录标识相同的各个数据记录的同级顺序值;
排序模块,用于根据所述同级顺序值获得模块获得的各个数据记录的同级顺序值,对树结构中的父级数据记录标识相同的各个数据记录进行排序。
较佳的,还包括:第一查询条件获得模块和第一查找模块,
第一查询条件获得模块,用于获得数据记录的查询条件;
第一查找模块,用于按照树结构的层级关系,依次选择树结构中的一层数据记录中的一个数据记录作为当前数据记录,判断当前数据记录是否满足所述查询条件,如果满足,则获得当前数据记录,将所获得的当前数据记录作为查询结果输出。
较佳的,还包括:第二查询条件获得模块,层次深度确定模块和第二查找模块,
第二查询条件获得模块,用于获得数据记录的查询条件;
层次深度确定模块,用于根据预设的查询条件与数据记录在树结构中层次深度的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的层次深度;
第二查找模块,用于在树结构中、层次深度确定模块所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录。
较佳的,还包括:第三查询条件获得模块、路径确定模块和第三查找模块,
第三查询条件获得模块,用于获得数据记录的查询条件;
路径确定模块,用于根据预设的查询条件与数据记录在树结构中路径的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的路径;
第三查找模块,用于根据路径确定模块所确定的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录。
由上述的技术方案可见,本发明实施例提供了一种数据结构转换方法及装置,将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中;依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,如果查找到所述目标数据记录,则确定目标数据记录和当前数据记录的父子关系;根据所确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录。
本发明在进行数据结构转换的过程中,无需对数据进行入栈操作和出栈操作,节省了时间。同时,由于本发明不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,因此只需为相同的中间数据分配一块内存空间即可,节省了内存空间的占用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据结构转换方法的第一种流程示意图;
图2为本发明实施例提供的数据结构转换方法的第二种流程示意图;
图3为本发明实施例提供的数据结构转换方法的第三种流程示意图;
图4为本发明实施例提供的数据结构转换方法的第四种流程示意图;
图5为本发明实施例提供的数据结构转换方法的第五种流程示意图;
图6为本发明实施例提供的数据结构转换装置的第一种结构示意图;
图7为本发明实施例提供的数据结构转换装置的第二种结构示意图;
图8为本发明实施例提供的数据结构转换装置的第三种结构示意图;
图9为本发明实施例提供的数据结构转换装置的第四种结构示意图;
图10为本发明实施例提供的数据结构转换装置的第五种结构示意图;
图11为以数组结构存储的数据记录的结果示意图;
图12为数据结构转换之后的以树结构存储的数据记录的结果示意图;
图13为数据记录排序后的以树结构存储的数据记录的结果示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据结构转换方法及装置,将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中;依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中;如果查找到所述目标数据记录,则确定目标数据记录和当前数据记录的父子关系;根据所确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录。
下面通过具体实施例,对本发明进行详细说明。
图1为本发明实施例提供的数据结构转换方法的第一种流程示意图,可以包括:
S101:将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中;
其中,所述数据记录在内存中以数组结构进行存储,每一条数据记录中至少包含有自身数据记录的标识和自身数据记录的父级数据记录的标识。在本发明实施例中,数据记录中还可以包括:自身数据记录的同级顺序值和自身数据记录中的主数据名称等。
示例性的,假设数据库或文件中存储的数据记录集合中的多条数据记录,如表1所示:
表1
ID | Name | ParentID | OrderIndex |
1 | 全部商品分类 | 0 | 0 |
2 | 数码产品 | 1 | 1 |
3 | 家用电器 | 1 | 0 |
4 | 电脑整机 | 2 | 0 |
5 | 电脑配件 | 2 | 1 |
6 | 生活电器 | 3 | 2 |
7 | 厨房电器 | 3 | 0 |
8 | 电器配件 | 3 | 1 |
其中,ID表示:自身数据记录的标识,ParentID表示:自身数据记录的父级数据记录的标识,OrderIndex表示:自身数据记录的同级顺序值,Name表示:自身数据记录中的主数据名称。
将表1中的数据记录读取到内存中,可以得到如图11所示的存储结果。
S102:依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中;
其中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间可以相同,所述目标数据记录为除所述当前数据记录外的其他数据记录、且所述目标数据记录的父级数据记录的标识与所述当前数据记录的标识相同。
S103:如果查找到所述目标数据记录,则确定目标数据记录和当前数据记录的父子关系;
其中,所确定的父子关系为:目标数据记录作为当前数据记录的子数据记录。
示例性的,以两层for循环来对S102和S103进行说明;
定义局部变量a和局部变量b;其中,局部变量a表示当前数据记录的指针,局部变量b表示目标数据的指针;
判断a指向的数据记录的标识和b指向的数据记录的父级数据记录的标识是否相同;
如果相同,则将b指向的数据记录作为a指向的数据记录的子数据记录,即a指向的数据记录为b指向的数据记录的父;
}
}
具体的,当a=0时,a指向的数据记录为“ID:1,Name:全部商品分类,ParentID:0,OrderIndex:0”,
当b=0时,b指向的数据记录为“ID:1,Name:全部商品分类,ParentID:0,OrderIndex:0”,此时,a指向的数据记录的标识和b指向的数据记录的父级数据记录的标识不同,执行b++,此时b=1;
当b=1时,b指向的数据记录为“ID:2,Name:数码产品,ParentID:1,OrderIndex:1”,此时,a指向的数据记录的标识和b指向的数据记录的父级数据记录的标识相同,则b指向的数据记录作为a指向的数据记录的子数据记录,执行b++,此时b=2;
当b=2时,b指向的数据记录为“ID:3,Name:家用电器,ParentID:1,OrderIndex:0”,此时,a指向的数据记录的标识和b指向的数据记录的父级数据记录的标识相同,则b指向的数据记录作为a指向的数据记录的子数据记录,执行b++,此时b=3;
依次类推,直到b<数组长度,执行a++,此时a=1;
当a=1时,a指向的数据记录为“ID:2,Name:数码产品,ParentID:1,OrderIndex:1”,和a=0的过程相同,从b=0开始执行,直到b<数组长度,执行a++,直到a<数组长度。
上述只在inta时,为局部变量a分配内存空间,在intb时,为局部变量b分配内存空间,在后续的执行过程中,局部变量a和局部变量b的值发生变化,但每次所使用的内存空间没有发生变化,即局部变量a前后所使用的内存空间是相同的,局部变量b前后所使用的内存空间是相同的。
根据上述的查找,得到的查找结果为:
数据记录为“ID:1,Name:全部商品分类,ParentID:0,OrderIndex:0”为数据记录为“ID:2,Name:数码产品,ParentID:1,OrderIndex:1”和数据记录为“ID:3,Name:家用电器,ParentID:1,OrderIndex:0”的父;
数据记录为“ID:2,Name:数码产品,ParentID:1,OrderIndex:1”为数据记录为“ID:4,Name:电脑整机,ParentID:2,OrderIndex:0”和数据记录为“ID:5,Name:电脑配件,ParentID:2,OrderIndex:1”的父;
数据记录为“ID:3,Name:家用电器,ParentID:1,OrderIndex:0”为数据记录为“ID:6,Name:生活电器,ParentID:3,OrderIndex:2”、数据记录为“ID:7,Name:厨房电器,ParentID:3,OrderIndex:0”和数据记录为“ID:8,Name:电器配件,ParentID:3,OrderIndex:1”的父。
上述都是以局部变量进行说明,在实际进行数据结构转换的过程中,不同时刻下的查找目标数据记录所使用的参数相同时,相同的参数所放入的内存空间可以相同;不同时刻下的查找目标数据记录所使用的返回地址相同时,相同的返回地址所放入的内存空间可以相同。
S104:根据所确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录;
其中,转换过程中任一当前数据记录所在节点为该当前数据记录的子数据记录所在节点的父节点。
根据S103所确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录,转换后的结果如图12所示。
应用本发明图1所示实施例,在进行数据结构转换的过程中,无需对数据进行入栈操作和出栈操作,节省了时间。同时,由于不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,因此只需为相同的中间数据分配一块内存空间即可,节省了内存空间的占用。
考虑到在实际应用中,由于数据库或文件中的数据记录集合中的多条数据记录可能会无顺序的存储,因此转换后的以树结构存储的数据记录也是无顺序的,为了方便对数据记录的查找,在所述每一条数据记录中还包括自身数据记录的同级顺序值的情况下,本发明实施例还提供第二种数据结构转换方法,参见图2所示。
本实施例在图1所示实施例的基础上,增加如下两个步骤:
S105:获得父级数据记录标识相同的各个数据记录的同级顺序值;
S106:根据获得的各个数据记录的同级顺序值,对树结构中的父级数据记录标识相同的各个数据记录进行排序。
对图12所示的树结构存储的数据记录进行排序,排序后的树结构存储的数据记录参见图13所示。
应用本发明图2所示实施例,对树结构中数据记录进行了排序,方便了后续对数据记录的查找。
图3为本发明实施例提供的数据结构转换方法的第三种流程示意图,本实施例在图1所示实施例的基础上,增加如下两个步骤:
S107:获得数据记录的查询条件;
S108:按照树结构的层级关系,依次选择树结构中的一层数据记录中的一个数据记录作为当前数据记录,判断当前数据记录是否满足所述查询条件,如果满足,则获得当前数据记录,将所获得的当前数据记录作为查询结果输出。
本发明所示实施例的S107也可以图2所示实施例的S106之后执行。
假设欲查询所有数码产品类的数据记录,选择树结构中的第一层的数据记录为当前数据记录,判断该数据记录是否符合要求;
如果第一层的数据记录符合要求,则获得该数据记录,继续选择树结构中的第二层的第一个数据记录为当前数据记录,判断该数据记录是否符合要求;
如果第一层的数据记录不符合要求,继续选择树结构中的第二层的第一个数据记录为当前数据记录,判断该数据记录是否符合要求;
直到判断完树结构中最后一层的最后一个记录是否符合要求。
在实际应用中,存在树结构的父数据记录满足数据记录查询条件,子数据记录相应的就满足数据记录查询条件,因此在查询到父数据记录满足数据记录查询条件时,将父数据记录作为查询结果,同时该数据记录的子数据记录也作为查询结果,相应的该数据记录的子数据记录的子数据记录也作为查询结果。
应用本发明图3所示实施例,提高了数据记录的查询效率。
图4为本发明实施例提供的数据结构转换方法的第四种流程示意图,本实施例在图1所示实施例的基础上,增加如下三个步骤:
S109:获得数据记录的查询条件;
S110:根据预设的查询条件与数据记录在树结构中层次深度的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的层次深度;
S111:在树结构的所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录。
本发明所示实施例的S109也可以图2所示实施例的S106之后执行。
示例性的,Name为全部商品分类的数据记录“ID:1,Name:全部商品分类,ParentID:0,OrderIndex:0”在树结构中层次深度为1;
Name为数码产品的数据记录“ID:2,Name:数码产品,ParentID:1,OrderIndex:1”在树结构中层次深度为2;
Name为家用电器的数据记录“ID:3,Name:家用电器,ParentID:1,OrderIndex:0”在树结构中层次深度为2;
Name为电脑整机的数据记录“ID:4,Name:电脑整机,ParentID:2,OrderIndex:0”在树结构中层次深度为3;
Name为电脑配件的数据记录“ID:5,Name:电脑配件,ParentID:2,OrderIndex:1”在树结构中层次深度为3;
Name为生活电器的数据记录“ID:6,Name:生活电器,ParentID:3,OrderIndex:2”在树结构中层次深度为3;
Name为厨房电器的数据记录“ID:7,Name:厨房电器,ParentID:3,OrderIndex:0”在树结构中层次深度为3;
Name为电器配件的数据记录“ID:8,Name:电器配件,ParentID:3,OrderIndex:1”在树结构中层次深度为3。
假设欲查询Name为生活电器的数据记录,则确定出Name为生活电器的数据记录在树结构的第3层,则在第3层查询Name为生活电器的数据记录。
应用本发明图4所示实施例,只需在树结构中所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录,无需在树结构中的所有数据记录中进行查找,提高了数据记录的查询效率。
图5为本发明实施例提供的数据结构转换方法的第五种流程示意图,本实施例在图1所示实施例的基础上,增加以下三个步骤:
S112:获得数据记录的查询条件;
S113:根据预设的查询条件与数据记录在树结构中路径的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的路径;
S114:根据所确定的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录。
本发明所示实施例的S112也可以图2所示实施例的S106之后执行。
示例性的,Name为全部商品分类的数据记录“ID:1,Name:全部商品分类,ParentID:0,OrderIndex:0”在树结构中的路径为:“/ID:1”。
Name为数码产品的数据记录“ID:2,Name:数码产品,ParentID:1,OrderIndex:1”在树结构中的路径为:“/ID:1/ID:2”;
Name为家用电器的数据记录“ID:3,Name:家用电器,ParentID:1,OrderIndex:0”在树结构中的路径为:“/ID:1/ID:3”;
Name为电脑整机的数据记录“ID:4,Name:电脑整机,ParentID:2,OrderIndex:0”在树结构中的路径为:“/ID:1/ID:2/ID:4”;
Name为电脑配件的数据记录“ID:5,Name:电脑配件,ParentID:2,OrderIndex:1”在树结构中的路径为:“/ID:1/ID:2/ID:5”;
Name为生活电器的数据记录“ID:6,Name:生活电器,ParentID:3,OrderIndex:2”在树结构中的路径为:“/ID:1/ID:3/ID:6”;
Name为厨房电器的数据记录“ID:7,Name:厨房电器,ParentID:3,OrderIndex:0”在树结构中的路径为:“/ID:1/ID:3/ID:7”;
Name为电器配件的数据记录“ID:8,Name:电器配件,ParentID:3,OrderIndex:1”在树结构中的路径为:“/ID:1/ID:3/ID:8”。
假设欲查询Name为生活电器的数据记录,则确定出Name为生活电器的数据记录在树结构中的路径为:“/ID:1/ID:3/ID:6”,则根据所确定的路径“/ID:1/ID:3/ID:6”查询Name为生活电器的数据记录。
应用本发明图5所示实施例,只需根据所确定的与所获得的查询条件对应的数据记录在树结构中的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录,无需在树结构中的所有数据记录中进行查找,提高了数据记录的查询效率。
与上述方法实施例相对应,本发明还提供了一种数据结构转换装置。
图6为本发明实施例提供的数据结构转换装置的第一种结构示意图,可以包括:数据记录读取模块201、目标数据记录查找模块202、父子关系确定模块203和转换模块204,其中,
数据记录读取模块201,用于将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中;
其中,所述数据记录在内存中以数组结构进行存储,每一条数据记录中至少包含有自身数据记录的标识和自身数据记录的父级数据记录的标识;
目标数据记录查找模块202,用于依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中;
其中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,所述目标数据记录为除所述当前数据记录外的其他数据记录、且所述目标数据记录的父级数据记录的标识与所述当前数据记录的标识相同;
父子关系确定模块203,用于在目标数据记录查找模块202查找到所述目标数据记录时,确定目标数据记录和当前数据记录的父子关系;
其中,所确定的父子关系为:目标数据记录作为当前数据记录的子数据记录;
转换模块204,用于根据父子关系确定模块203确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录;
其中,在转换过程中任一当前数据记录所在节点为该当前数据记录的子数据记录所在节点的父节点。
应用本发明图6所示实施例,在进行数据结构转换的过程中,无需对数据进行入栈操作和出栈操作,节省了时间。同时,由于不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,因此只需为相同的中间数据分配一块内存空间即可,节省了内存空间的占用。
图7为本发明实施例提供的数据结构转换装置的第二种结构示意图,可以包括:数据记录读取模块201、目标数据记录查找模块202、父子关系确定模块203、转换模块204、同级顺序值获得模块205和排序模块206,其中,
同级顺序值获得模块205,用于获得父级数据记录标识相同的各个数据记录的同级顺序值;
排序模块206,用于根据同级顺序值获得模块205获得的各个数据记录的同级顺序值,对树结构中的父级数据记录标识相同的各个数据记录进行排序。
应用本发明图7所示实施例,对树结构中的父级数据记录标识相同的各个数据记录进行了排序,提高了后续查找数据记录的效率。
图8为本发明实施例提供的数据结构转换装置的第三种结构示意图,可以包括:数据记录读取模块201、目标数据记录查找模块202、父子关系确定模块203、转换模块204、第一查询条件获得模块207和第一查找模块208,其中,
第一查询条件获得模块207,用于获得数据记录的查询条件;
第一查找模块208,用于按照树结构的层级关系,依次选择树结构中的一层数据记录中的一个数据记录作为当前数据记录,判断当前数据记录是否满足所述查询条件,如果满足,则获得当前数据记录,将所获得的当前数据记录作为查询结果输出。
应用本发明图8所示实施例,提高了数据记录的查询效率。
图9为本发明实施例提供的数据结构转换装置的第四种结构示意图,可以包括:数据记录读取模块201、目标数据记录查找模块202、父子关系确定模块203、转换模块204、第二查询条件获得模块209,层次深度确定模块210和第二查找模块211,其中,
第二查询条件获得模块209,用于获得数据记录的查询条件;
层次深度确定模块210,用于根据预设的查询条件与数据记录在树结构中层次深度的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的层次深度;
第二查找模块211,用于在树结构中、层次深度确定模块所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录。
应用本发明图9所示实施例,只需在树结构中所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录,无需在树结构中的所有数据记录中进行查找,提高了数据记录的查询效率。
图10为本发明实施例提供的数据结构转换装置的第五种结构示意图,可以包括:数据记录读取模块201、目标数据记录查找模块202、父子关系确定模块203、转换模块204、第三查询条件获得模块212、路径确定模块213和第三查找模块214,其中,
第三查询条件获得模块212,用于获得数据记录的查询条件;
路径确定模块213,用于根据预设的查询条件与数据记录在树结构中路径的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的路径;
第三查找模块214,用于根据路径确定模块所确定的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录。
应用本发明图10所示实施例,只需根据所确定的与所获得的查询条件对应的数据记录在树结构中的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录,无需在树结构中的所有数据记录中进行查找,提高了数据记录的查询效率。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种数据结构转换方法,其特征在于,包括:
将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中,其中,所述数据记录在内存中以数组结构进行存储,每一条数据记录中至少包含有自身数据记录的标识和自身数据记录的父级数据记录的标识;
依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中,其中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,所述目标数据记录为除所述当前数据记录外的其他数据记录、且所述目标数据记录的父级数据记录的标识与所述当前数据记录的标识相同,如果查找到所述目标数据记录,则确定目标数据记录和当前数据记录的父子关系,其中,所确定的父子关系为:目标数据记录作为当前数据记录的子数据记录;
根据所确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录,其中,在转换过程中,任一当前数据记录所在节点为:该当前数据记录的子数据记录所在节点的父节点。
2.根据权利要求1所述的方法,其特征在于,所述每一条数据记录中还包含自身数据记录的同级顺序值,所述方法还包括:
获得父级数据记录标识相同的各个数据记录的同级顺序值;
根据获得的各个数据记录的同级顺序值,对树结构中的父级数据记录标识相同的各个数据记录进行排序。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获得数据记录的查询条件;
按照树结构的层级关系,依次选择树结构中的一层数据记录中的一个数据记录作为当前数据记录,判断当前数据记录是否满足所述查询条件,如果满足,则获得当前数据记录,将所获得的当前数据记录作为查询结果输出。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获得数据记录的查询条件;
根据预设的查询条件与数据记录在树结构中层次深度的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的层次深度;
在树结构的所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获得数据记录的查询条件;
根据预设的查询条件与数据记录在树结构中路径的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的路径;
根据所确定的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录。
6.一种数据结构转换装置,其特征在于,包括:数据记录读取模块、目标数据记录查找模块、父子关系确定模块和转换模块,
数据记录读取模块,用于将数据库或文件中存储的数据记录集合中的多条数据记录读取到内存中,其中,所述数据记录在内存中以数组结构进行存储,每一条数据记录中至少包含有自身数据记录的标识和自身数据记录的父级数据记录的标识;
目标数据记录查找模块,用于依次选择数组结构存储的数据记录中的一个数据记录作为当前数据记录,在所述数组结构存储的数据记录中查找目标数据记录,将当前时刻查找目标数据记录所使用的中间数据放入内存空间中,其中,不同时刻下的查找目标数据记录所使用的中间数据相同时,相同的中间数据所放入的内存空间相同,所述目标数据记录为除所述当前数据记录外的其他数据记录、且所述目标数据记录的父级数据记录的标识与所述当前数据记录的标识相同;
父子关系确定模块,用于在所述目标数据记录查找模块查找到所述目标数据记录时,确定目标数据记录和当前数据记录的父子关系,其中,所确定的父子关系为:目标数据记录作为当前数据记录的子数据记录;
转换模块,用于根据所述父子关系确定模块确定的父子关系,将各当前数据记录和各当前数据记录的子数据记录转换为树结构的数据记录,其中,在转换过程中,任一当前数据记录所在节点为:该当前数据记录的子数据记录所在节点的父节点。
7.根据权利要求6所述的装置,其特征在于,所述每一条数据记录中还包含自身数据记录的同级顺序值,所述装置还包括:
同级顺序值获得模块,用于获得父级数据记录标识相同的各个数据记录的同级顺序值;
排序模块,用于根据所述同级顺序值获得模块获得的各个数据记录的同级顺序值,对树结构中的父级数据记录标识相同的各个数据记录进行排序。
8.根据权利要求6或7所述的装置,其特征在于,还包括:第一查询条件获得模块和第一查找模块,
第一查询条件获得模块,用于获得数据记录的查询条件;
第一查找模块,用于按照树结构的层级关系,依次选择树结构中的一层数据记录中的一个数据记录作为当前数据记录,判断当前数据记录是否满足所述查询条件,如果满足,则获得当前数据记录,将所获得的当前数据记录作为查询结果输出。
9.根据权利要求6或7所述的装置,其特征在于,还包括:第二查询条件获得模块,层次深度确定模块和第二查找模块,
第二查询条件获得模块,用于获得数据记录的查询条件;
层次深度确定模块,用于根据预设的查询条件与数据记录在树结构中层次深度的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的层次深度;
第二查找模块,用于在树结构中、层次深度确定模块所确定的层次深度的数据记录中,查找满足所获得的查询条件的数据记录。
10.根据权利要求6或7所述的装置,其特征在于,还包括:第三查询条件获得模块、路径确定模块和第三查找模块,
第三查询条件获得模块,用于获得数据记录的查询条件;
路径确定模块,用于根据预设的查询条件与数据记录在树结构中路径的对应关系,确定与所获得的查询条件对应的数据记录在树结构中的路径;
第三查找模块,用于根据路径确定模块所确定的路径,在树结构的数据记录中,查找满足所获得的查询条件的数据记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410314682.3A CN105279177A (zh) | 2014-07-03 | 2014-07-03 | 一种数据结构转换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410314682.3A CN105279177A (zh) | 2014-07-03 | 2014-07-03 | 一种数据结构转换方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105279177A true CN105279177A (zh) | 2016-01-27 |
Family
ID=55148200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410314682.3A Pending CN105279177A (zh) | 2014-07-03 | 2014-07-03 | 一种数据结构转换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105279177A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326427A (zh) * | 2016-08-24 | 2017-01-11 | 明算科技(北京)股份有限公司 | 线性结构到树形结构的数据结构转换方法 |
CN106656614A (zh) * | 2016-12-29 | 2017-05-10 | 山东鲁能智能技术有限公司 | 基于配电终端设备xml文件的定制转发表生成方法及系统 |
CN108037967A (zh) * | 2017-11-27 | 2018-05-15 | 深圳市丰巢科技有限公司 | 一种基于多父子结构的菜单加载方法以及电子设备 |
CN108874484A (zh) * | 2018-06-06 | 2018-11-23 | 网易(杭州)网络有限公司 | 数据处理方法、装置、设备及存储介质 |
CN109213709A (zh) * | 2017-06-30 | 2019-01-15 | 广东神马搜索科技有限公司 | 数据转换方法、装置及数据处理设备 |
CN109241151A (zh) * | 2017-06-29 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据结构的转换方法、装置及电子设备 |
CN110765123A (zh) * | 2018-07-09 | 2020-02-07 | 株式会社日立制作所 | 基于树形结构的材料数据的存储方法、装置和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020024A (zh) * | 2012-12-27 | 2013-04-03 | 北京经纬恒润科技有限公司 | 一种文件格式转换方法 |
CN103514291A (zh) * | 2013-09-29 | 2014-01-15 | 西安交通大学 | 一种文本中树形结构数据的显示方法 |
CN103729443A (zh) * | 2013-12-30 | 2014-04-16 | 北京首钢自动化信息技术有限公司 | 一种可配置式内存管理方法 |
US20140122428A1 (en) * | 2011-09-16 | 2014-05-01 | Ca, Inc. | System and method for network file system server replication using reverse path lookup |
-
2014
- 2014-07-03 CN CN201410314682.3A patent/CN105279177A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122428A1 (en) * | 2011-09-16 | 2014-05-01 | Ca, Inc. | System and method for network file system server replication using reverse path lookup |
CN103020024A (zh) * | 2012-12-27 | 2013-04-03 | 北京经纬恒润科技有限公司 | 一种文件格式转换方法 |
CN103514291A (zh) * | 2013-09-29 | 2014-01-15 | 西安交通大学 | 一种文本中树形结构数据的显示方法 |
CN103729443A (zh) * | 2013-12-30 | 2014-04-16 | 北京首钢自动化信息技术有限公司 | 一种可配置式内存管理方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326427A (zh) * | 2016-08-24 | 2017-01-11 | 明算科技(北京)股份有限公司 | 线性结构到树形结构的数据结构转换方法 |
CN106326427B (zh) * | 2016-08-24 | 2019-08-06 | 明算科技(北京)股份有限公司 | 线性结构到树形结构的数据结构转换方法 |
CN106656614A (zh) * | 2016-12-29 | 2017-05-10 | 山东鲁能智能技术有限公司 | 基于配电终端设备xml文件的定制转发表生成方法及系统 |
CN106656614B (zh) * | 2016-12-29 | 2019-07-26 | 山东鲁能智能技术有限公司 | 基于配电终端设备xml文件的定制转发表生成方法及系统 |
CN109241151A (zh) * | 2017-06-29 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据结构的转换方法、装置及电子设备 |
CN109241151B (zh) * | 2017-06-29 | 2022-05-10 | 阿里巴巴集团控股有限公司 | 一种数据结构的转换方法、装置及电子设备 |
CN109213709A (zh) * | 2017-06-30 | 2019-01-15 | 广东神马搜索科技有限公司 | 数据转换方法、装置及数据处理设备 |
CN109213709B (zh) * | 2017-06-30 | 2021-01-15 | 阿里巴巴(中国)有限公司 | 数据转换方法、装置及数据处理设备 |
CN108037967A (zh) * | 2017-11-27 | 2018-05-15 | 深圳市丰巢科技有限公司 | 一种基于多父子结构的菜单加载方法以及电子设备 |
CN108874484A (zh) * | 2018-06-06 | 2018-11-23 | 网易(杭州)网络有限公司 | 数据处理方法、装置、设备及存储介质 |
CN110765123A (zh) * | 2018-07-09 | 2020-02-07 | 株式会社日立制作所 | 基于树形结构的材料数据的存储方法、装置和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279177A (zh) | 一种数据结构转换方法及装置 | |
CN102999526B (zh) | 一种数据库关系表的拆分、查询方法及系统 | |
CN101276334B (zh) | 一种快速检索数据的链表实现方法 | |
CN101727465B (zh) | 分布式列存储数据库索引建立、查询方法及装置与系统 | |
CN102650996B (zh) | 确定数据库表之间的数据映射关系的方法和装置 | |
CN104021161B (zh) | 一种聚簇存储方法及装置 | |
JP7011848B2 (ja) | 大規模データセットの高速検索またはフィルタリングのためのシステム、方法、およびデータ構造 | |
CN104281664B (zh) | 分布式图计算系统数据切分方法和系统 | |
GB2585890A (en) | System for distributed data processing using clustering | |
CN103049473A (zh) | 一种数据查询方法及装置 | |
CN109710618A (zh) | 知识图谱数据关系分离的混合存储方法及系统 | |
CN107783980A (zh) | 索引数据生成及数据查询方法及装置、存储和查询系统 | |
CN104112008A (zh) | 一种多表数据关联查询优化方法和装置 | |
CN105550225A (zh) | 索引构建方法、查询方法及装置 | |
CN101706800A (zh) | 一种关联单据的查找方法及系统 | |
CN104268298A (zh) | 一种创建数据库索引及其查询的方法 | |
CN102622434A (zh) | 数据存储方法、查找方法及装置 | |
CN105745642B (zh) | 查询数据的处理方法和装置 | |
CN106095863A (zh) | 一种多维度数据查询和存储系统和方法 | |
CN103744896A (zh) | 一种数据处理方法和装置 | |
CN103853499A (zh) | 一种多源数据存储和读取方法 | |
CN105447030A (zh) | 一种索引处理方法与设备 | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
CN103810300A (zh) | 用于非索引覆盖的数据查询方法和装置 | |
CN106934679A (zh) | 信息匹配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160127 |