首页 > 其他 > 详细

栈的压入、弹出序列

时间:2021-02-18 15:04:54      阅读:36      评论:0      收藏:0      [点我收藏+]
bool IsPopOrder(const int* pPush, const int* pPop, int nLength)
{
	if (pPush == nullptr || pPop == nullptr || nLength <= 0)
		return false;

	std::stack<int> stackData;
	const int* pNextPush = pPush;
	const int* pNextPop = pPop;
	while (pNextPop - pPop > nLength)
	{
		while(stackData.empty() || stackData.top() != *pNextPop)
		{
			if (pNextPush - pPush == nLength)
				break;
			stackData.push(*pNextPush);
			pNextPush++;
		}
		
		if (stackData.top() != *pNextPop)
			break;

		stackData.pop();
		pNextPop++;
	}

	if (stackData.empty() && pNextPop - pPop == nLength)
		return true;
	else
		return false;
}

  

栈的压入、弹出序列

原文:https://www.cnblogs.com/yapp/p/14411645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!