careerpup - 창고 와 대열 3.5
4374 단어 UP
해답
대기 열 은 선진 적 인 데이터 구조 (FIFO) 이 고 스 택 은 선진 적 인 데이터 구조 (FILO) 입 니 다. 두 개의 스 택 으로 대기 열 을 실현 하 는 가장 간단 한 방법 은 대기 열 에 들 어가 면 첫 번 째 스 택 으로 스 택 을 누 르 고 두 번 째 스 택 이 비어 있 지 않 으 면 두 번 째 스 택 에서 대열 을 나 갑 니 다. 그렇지 않 으 면 첫 번 째 스 택 의 데 이 터 를 두 번 째 스 택 에 순서대로 누 른 다음 에 스 택 을 나 갑 니 다.매번 데이터 가 대기 열 에 들 어 갈 때마다 첫 번 째 스 택 에 직접 들 어 갑 니 다.데이터 가 대기 열 에 있 을 때마다 두 번 째 스 택 이 비어 있 지 않 을 때 두 번 째 스 택 에서 바로 나 옵 니 다.
C + + 구현 코드:
#include<iostream>
#include<stack>
using namespace std;
class MyQueue
{
private:
stack<int> s1;
stack<int> s2;
public:
void push(int x)
{
s1.push(x);
}
void pop()
{
if(s1.empty()&&s2.empty())
return;
if(s2.empty()&&!s1.empty())
{
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
s2.pop();
}
else
s2.pop();
}
int front()
{
if(s1.empty()&&s2.empty())
return 0;
if(!s2.empty())
return s2.top();
while(!s1.empty())
{
s2.push(s1.top());
s1.pop();
}
return s2.top();
}
int size()
{
return s1.size()+s2.size();
}
bool empty()
{
return s1.empty()&&s2.empty();
}
};
int main()
{
MyQueue q;
for(int i=0; i<10; ++i)
{
q.push(i);
}
cout<<q.front()<<endl;
q.pop();
q.push(10);
cout<<q.front()<<endl;
cout<<q.size()<<" "<<q.empty()<<endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개인 FLEX 지식 라이브러리 작업 노트[size=large]1、 이 방법은 TileWindows 팝업 창에 있습니다. TitleWindows의 maxWidth와 maxHeight를 지정하지 않으면 최대 값이 화면 전체에 깔립니다. 페이지의minHeigh...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.