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