您的位置:首页 > 其它

元素出栈、入栈顺序的合法性

2016-09-10 21:50 330 查看
如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)

先把1,2,3,4压入栈,再把4弹出,再把5压入,最后依次弹出5,3,2,1

#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>

#include<stdlib.h>

#include<stack>

#include<assert.h>

using namespace std;

template<class T>

bool CheckStack(const T *sPush, const T *sPop, size_t sizein, size_t sizeout)

{
assert(sPush && sPop);
assert(sizein && sizeout);
if (sizein != sizeout)
return false;
stack<T> s;
int i = 0;
int j = 0;
for (i = 0; i < sizein; i++)
{
s.push(sPush[i]);
while (j<sizeout)
{
if (!s.empty() && s.top() == sPop[j])
{
s.pop();
j++;
}
else
{
break;
}
}

}
if (!s.empty())
{
return false;
}
else
return true;

}

void Test()

{
int a[] = { 1, 2, 3, 4, 5 };
int b[] = { 4, 5, 3, 2, 1 };
size_t sizein = sizeof(a) / sizeof(a[0]);
size_t sizeout = sizeof(a) / sizeof(a[0]);
cout << CheckStack(a, b, sizein, sizeout) << endl;

}

int main()

{
Test();
system("pause");
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐