元素出栈、入栈顺序的合法性
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;
}
先把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;
}
相关文章推荐
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性。
- 判断元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。
- day08之元素出栈、入栈顺序的合法性+计算一个整数二进制位中1的个数
- 剑指offer 22---判断元素出栈、 入栈顺序的合法性
- 元素出栈,入栈顺序的合法性。如入栈的序列(1,2,3,4,5)。出栈序列为(4,5,3,2,1)
- 判断元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)是合法序列
- -元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。
- [置顶] 关于元素出栈、入栈顺序的合法性的事儿
- 元素出栈、入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性
- 元素出栈、入栈顺序的合法性
- 判断元素出栈、入栈顺序的合法性。如:入栈的序列( 1,2,3,4,5 ),出栈序列为 ( 4,5,3,2,1 )是合法序列,入栈的序列( 1,2,3,4,5 ),出栈序列为( 1,5,3,2,4 )是
- 栈--元素出栈、入栈顺序的合法性问题
- 元素的出栈、入栈顺序的合法性。
- 判断元素出栈,入栈顺序的合法性
- 元素出栈、入栈顺序的合法性【数据结构】