데이터 구조 - Stack 과 Queue 의 상호 실현
5877 단어 데이터 구조
stack s;//헤더 파일 stack. h s. empty ();s.size(); s.pop(); //delete s.push(1); int a=s.top();
queue s;//헤더 파일 quue. h s. empty ();s.size(); s.front(); s.back(); s.pop();//delete s.push(1); priority_queue s;/헤더 파일 quue. h, 우선 대기 열, 기본 사용 요소 / quue 를 바탕 으로 s. top () 을 하나 더 사용 하고 s. push (1) 작업 위치 가 다 릅 니 다.
직접 프로그램 에 올 라 가 생각 을 설명 하지 않 습 니 다.
template<typename T>// stack Queue
class Queue{
private:
stack s1,s2;
T back_elem;
public:
bool empty()const{return (s2.empty()&&s1.empty()) ;}
int size()const{ return s2.size()+s1.size(); }
void push(T elem) { s1.push(elem); back_elem=elem; }
void pop(){ if(!s2.empty()) s2.pop();
else
if(!s1.empty()) {
while(!s1.empty()){ s2.push(s1.top);s1.pop();}
s2.pop();
}
else cout<<"error pop,Queue is empty!"<if(!s2.empty()) return s2.top();
else
if(!s1.empty()){
while(!s1.empty()){ s2.push(s1.top());s1.pop();}
return s2.top();
}
else cout<<"error front,Queue is empty!"<if(!empty()) return back_elem;
else cout<<"error back,Queue is empty!"<template<typename T>// Queue stack
class Stack{
private://
queue q1,q2;
bool f1,f2;// 。
public:
Stack(){f1=true;f2=false;}//f1,f2
bool empty()const{return q1.empty()&&f1 || q2.empty()&& f2;}
int size()const{
if(!q1.empty()&&f1) return q1.size();
if(!q2.empty()&&f2) return q2.size();
return 0;
}
void pop(){
if(!q1.empty()&&f1){
while(q1.size()!=1){
q2.push(q1.front());
q1.pop(); }
q1.pop(); f1=false;f2=true;
return;
}
if(!q2.empty() &&f2){
while(q2.size()!=1){
q1.push(q2.front());
q2.pop(); }
q2.pop();f2=false;f1=true;
return;
}
std::cout<<"pop error,Stack is empty!"<void push( T elem){
if(f1) q1.push(elem);
else q2.push(elem);
}
T top(){
if(!q1.empty() && f1) return q1.back();
if(!q2.empty() &&f2 ) return q2.back();
std::cout<<"top error,Stack is empty!"<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에 따라 라이센스가 부여됩니다.