iso file download
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202111673479.1 (22)申请日 2021.12.31 (71)申请人 广东国腾量子科技有限公司 地址 526238 广东省肇庆市高新区北江大 道18号富民大厦1319室 (72)发明人 郭邦红 李记烽 胡敏  (51)Int.Cl. G06F 9/50(2006.01) G06F 16/2458(2019.01) G06N 10/00(2022.01) (54)发明名称 一种栈的自动增长处 理系统及方法 (57)摘要 本发明公开了一种栈的自动增长处理系统 及方法, 该方法首先建立一个通用栈的结构类; 构建所述结构类的构造函数并新 建第一数组, 将 第一数组的地址分别存入到第一个数组地址指 针和最后一个数组地址指针中; 当任意元素A入 栈时, 采用所述入栈函数push来计算 当前栈尾元 素在最后一个数组的位置的值来判断当前数组 是否还存在剩余空间, 如果有 直接将元素A入栈, 如果没有则建立第二数组存放入栈元素A; 当数 组(除了第一个数组)无存放任何栈元素时, 采用 出栈函数pop释放该数组, 防止空间内存的占用 和浪费。 本发 明公开的方法实现了数组的动态增 长效果, 即栈的自动增长功能, 且提升了栈的存 储效率, 可广泛应用于量子网络与计算机领域。 权利要求书2页 说明书6页 附图3页 CN 114595056 A 2022.06.07 CN 114595056 A 1.一种栈的自动增长处理系统, 其特征在于, 包括结构类建立模块、 数组建立模块、 出 栈模块和入 栈模块, 其中: 所述结构类建立模块用于建立 一个通用栈的结构类, 并设置结构类的成员变量; 所述数组建立模块用于构建所述结构类的构造函数并新建第一数组; 所述入栈模块用于进行入栈操作, 采用所述入栈函数push来计算当前栈尾元素在最后 一个数组的位置的值index1; 当所述index1的值不等于0时, 则将任意入栈元素A入栈, 当 index1的值 等于0, 则通过 数组建立模块建立第二数组; 所述出栈模块用于进行出栈操作, 采用出栈函数pop来计算当前栈尾元素B在最后一个 数组的位置的值 Index2, 当i ndex2的值 不等于1时, 则将当前栈尾元 素B出栈; 当index2的值等于1时, 将所述当前栈尾元素B出栈, 释放最后一个数组地址* lastArray指向的数组并将*last Array指向倒数第二个数组。 2.一种栈的自动增长处理方法, 其特征在于, 应用了如权利要求1所述的一种 栈的自动 增长处理系统, 该 方法步骤如下: 步骤1: 建立 一个通用栈的结构类, 并设置结构类的成员变量; 所述成员变量包括存放栈元素的第一个数组地址指针*firstArray, 存放栈元素的最 后一个数组地址指针*lastArray, 每个数组的长度arrayLen, 当前数组的个数arrayNum, 当 前栈元素的大小size; 步骤2: 构建所述结构类的构造函数并新建第一数组, 第一数组命名为newArray1, 将第 一数组的地址分别存入到第一个数组地址指针*firstArray和最后一个数组地址指针* lastArray中; 步骤3: 为所述结构类构建一个入 栈函数push与出栈函数pop; 步骤4: 当任意元素A入栈时, 采用所述入栈函数push来计算当前栈尾元素在最后一个 数组的位置的值 index1, 计算公式为: Index1=size%(ar rayLen‑1), 当所述index1的值 不等于0时, 则将所述元 素A入栈, 同时size值加1; 当index1的值 等于0, 则建立第二数组newA rray2并跳转到步骤5; 步骤5: 地址指针*lastArray移除当前指向的数组并指向第二数组地址, 数组的个数 arrayNum的值加1, size值加1, 并将所述入 栈元素A赋值给第二数组的第一个元 素; 步骤6: 当栈尾元素B出栈时, 采用出栈函数pop来计算当前栈尾元素B在最后一个数组 的位置的值 Index2, 计算公式为: Index2=size%(ar rayLen‑1), 当index2的值 不等于1时, 将所述栈尾元 素B出栈, 同时size值减1; 当index2的值等于1时, 将所述栈尾元素B出栈, 释放最后一个数组地址*lastArray指 向的数组并将*last Array指向倒数第二个数组。 3.根据权利要求2所述的一种栈的自动增长处理方法, 其特征在于, 步骤2中新建第一 数组时, 数组长度ar rayLen为len, 初始数组个数ar rayNum为1, 当前栈元 素的大小size为0 。 4.根据权利要求3所述的一种栈的自动增长处理方法, 其特征在于, 所述入栈函数push 包括一个栈元 素参数, 所述 参数的命名为*item, 类型为指针。 5.根据权利要求4所述的一种栈的自动增长处理方法, 其特征在于, 步骤4中的元素入权 利 要 求 书 1/2 页 2 CN 114595056 A 2栈后的位置表示 为: *item= newArray2[index]。 6.根据权利要求2所述的一种 栈的自动增长处理方法, 其特征在于, 所述结构体还包括 查询函数fi ndByRule、 排序函数sor tByRule和显示 函数showAll。 7.根据权利要求书6所述的一种栈的自动增长处理方法, 其特征在于, 所述查询函数 findByRule的查询步骤为: 步骤A: 设定一个条件参数*rule, 所述*rule是一个函数指针, 所述*rule指向的函数为 规则函数rule; 步骤B: 设定一个currentArray循环数组, 并将第一个数组的地址赋值给 currentArray, 即*currentArray=*first Array; 步骤C: 设定一个 循环变量 i=0, 循环开始并判断i是否小于size; 若i的值大于或等于size的值时, 则返回空值, 循环结束; 若i的值小于size的值时, 则判断当前的元素是否符合所述规则函数rule的规则, 若符 合, 则返回当前 元素; 若不符合, 则判断当前的元 素是否是当前 数组中的最后一个栈元 素; 若当前的元素是当前数组的最后一个栈元素, 则改变当前循环的数组为下一个数组, 循环继续; 若当前循环的元 素不是当前 数组的最后一个栈元 素, 循环继续; 判断当前循环的元素是否是当前数组中的最后一个栈元素的依据是: 若i% (arrayLen‑1)==arrayLen‑2, 则当前循环的元 素是当前数组的最后一个栈元 素; 步骤D: 当i的值大于size的值时, 则表示没有找到符合规则函数rule的规则的元素, 返 回空值, 循环结束。 8.根据权利要求书6所述的一种栈的自动增长处理方法, 其特征在于, 所述排序函数 sortByRule的排序步骤为: 步骤a: 建立第三数组; 步骤b: 遍历结构体的所有元 素, 并根据排序规则将栈元 素依次插 入到第三数组中; 步骤c: 遍历结束后, 第三数组的排序完成。 9.根据权利要求书8所述的一种 栈的自动增长处理方法, 其特征在于, 所述第 三数组的 长度为当前栈的大小; 所述排序规则包括升序排序和降序排序。 10.根据权利要求书6所述的一种栈的自动增长处理方法, 其特征在于, 所述显示函数 showAll采用for循环语句对所述结构类的所有栈元 素进行遍历。权 利 要 求 书 2/2 页 3 CN 114595056 A 3

.PDF文档 专利 一种栈的自动增长处理系统及方法

文档预览
中文文档 12 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共12页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种栈的自动增长处理系统及方法 第 1 页 专利 一种栈的自动增长处理系统及方法 第 2 页 专利 一种栈的自动增长处理系统及方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-19 02:00:19上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。