From 4cfecb411709ae5226ef5fa4ac41b1e291da8e31 Mon Sep 17 00:00:00 2001 From: coffee Date: Wed, 2 Apr 2025 10:23:06 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=A2=9E=E5=8A=A0=E5=AD=97=E8=8A=82?= =?UTF-8?q?=E6=A0=88=E6=9F=A5=E6=89=BE=E5=8F=AF=E4=BB=A5=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/HByteStack.h | 3 +++ src/HByteStack.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/HByteStack.h b/include/HByteStack.h index 2353903..d91acdd 100644 --- a/include/HByteStack.h +++ b/include/HByteStack.h @@ -119,6 +119,9 @@ void HByteStackClear(HByteType *stackData); // 从栈顶开始查找, 成功返回位置, 失败返回 HBYTE_STACK_ERROR HByteLenType HByteStackFind(const HByteType *stackData, HByteDataType value); +// 从栈顶开始查找, 到pos索引结束, 成功返回位置, 失败返回 HBYTE_STACK_ERROR +HByteLenType HByteStackFindEx(const HByteType *stackData, HByteDataType value, HByteLenType endPos); + // 即当前栈位置 HByteLenType HByteStackGetUseLen(const HByteType *stackData); diff --git a/src/HByteStack.c b/src/HByteStack.c index ab8e725..104eae0 100644 --- a/src/HByteStack.c +++ b/src/HByteStack.c @@ -126,11 +126,15 @@ void HByteStackClear(HByteType *stackData) { } HByteLenType HByteStackFind(const HByteType *stackData, HByteDataType value) { - if (HByteStackEmpty(stackData)) { + return HByteStackFindEx(stackData, value, 0); +} + +HByteLenType HByteStackFindEx(const HByteType *stackData, HByteDataType value, HByteLenType endPos) { + if (endPos >= GetStackUseLen(stackData)) { return HBYTE_STACK_ERROR; } - for (HByteLenType i = GetStackUseLen(stackData); i-- > 0;) { + for (HByteLenType i = GetStackUseLen(stackData); i-- > endPos;) { if (GetStackData(stackData, i) == value) { return i; }