스 택 의 push, pop 시퀀스 가 올 바른 지 여부
2043 단어 데이터 구조
예 를 들 어 입력 한 push 서열 이 1, 2, 3, 4, 5 라면 4, 5, 3, 2, 1 은 pop 시리즈 일 수 있 습 니 다.다음 과 같은 push 와 pop 서열 이 있 기 때 문 입 니 다. push 1, push 2, push 3, push 4, pop, push 5, pop, pop, pop, pop. 이렇게 얻 은 pop 서열 은 4, 5, 3, 2, 1 입 니 다.그러나 서열 4, 3, 5, 1, 2 는 push 서열 1, 2, 3, 4, 5 의 pop 서열 일 수 없다.
분석: 이 문 제 는 스 택 이라는 기본 데이터 구조 에 대한 이 해 를 시험 하 는 동시에 우리 의 분석 능력 도 시험 할 수 있다.구체 적 인 실현 코드 는 다음 과 같다.
/ / isStackPushPop. cpp: 콘 솔 프로그램의 입구 점 을 정의 합 니 다. /
#include "stdafx.h"
#include
using namespace std;
bool isStackPushPop(int a[], int b[], int n) { stack
int main() { int a[] = {1,2,3,4,5}; int b[] = {5,4,2,3,1}; //int b[]={4,5,3,2,1}; //int b[]={5,4,3,2,1}; cout<
// isStackPushPop.cpp : 。
//
#include "stdafx.h"
#include <iostream>
#include <stack>
using namespace std;
bool isStackPushPop(int a[], int b[], int n)
{
stack<int> ms;
int i = -1, j = 0;
while (i < n && j < n)
{
if (ms.empty() || ms.top() != b[j])
ms.push(a[++i]);
else
{
ms.pop();
j ++;
}
}
return ms.empty();
}
int main()
{
int a[] = {1,2,3,4,5};
int b[] = {5,4,2,3,1};
//int b[]={4,5,3,2,1};
//int b[]={5,4,3,2,1};
cout<<isStackPushPop(a, b, 5)<<endl;
system("pause");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.