多少分

来源:互联网 发布:java框架书籍知乎 编辑:程序博客网 时间:2024/06/10 20:00
#include <iostream>
#include <cstdio>
#include <stack>


using namespace std;


bool IspopOrder(const int *pPush, const int *pPop, int length){






        bool possible = false;
        if(pPush != NULL && pPop != NULL &&length > 0){




            const int *pNextPush = pPush;
            const int *pNextPop = pPop;
            stack<int>stackData;
            while(pNextPop - pPop < length){


                while(stackData.empty() || stackData.top() != *pNextPop){




                    if(pNextPush - pPush == length){


                        break;
                    }
                    stackData.push(*pNextPush);
                    pNextPush++;
                }
                if(stackData.top() != *pNextPop){


                    break;
                }
                stackData.pop();
                pNextPop++;
            }
            if(stackData.empty() && pNextPop - pPop == length)
                possible = true;


        }
        return possible;
}


void Test1()
{
    const int nLength = 5;
    int push[nLength] = {1, 2, 3, 4, 5};
    int pop[nLength] = {4, 5, 3, 2, 1};


    Test("Test1", push, pop, nLength, true);
}


void Test2()
{
    const int nLength = 5;
    int push[nLength] = {1, 2, 3, 4, 5};
    int pop[nLength] = {3, 5, 4, 2, 1};


    Test("Test2", push, pop, nLength, true);
}


void Test3()
{
    const int nLength = 5;
    int push[nLength] = {1, 2, 3, 4, 5};
    int pop[nLength] = {4, 3, 5, 1, 2};


    Test("Test3", push, pop, nLength, false);
}


void Test4()
{
    const int nLength = 5;
    int push[nLength] = {1, 2, 3, 4, 5};
    int pop[nLength] = {3, 5, 4, 1, 2};


    Test("Test4", push, pop, nLength, false);
}


// push和pop序列只有一个数字
void Test5()
{
    const int nLength = 1;
    int push[nLength] = {1};
    int pop[nLength] = {2};


    Test("Test5", push, pop, nLength, false);
}


void Test6()
{
    const int nLength = 1;
    int push[nLength] = {1};
    int pop[nLength] = {1};


    Test("Test6", push, pop, nLength, true);
}


void Test7()
{
    Test("Test7", NULL, NULL, 0, false);
}


int main()
{
    Test1();
    Test2();
    Test3();
    Test4();
    Test5();
    Test6();
    Test7();
    return 0;
}
0 0
原创粉丝点击