데이터 구조 - 스 택 - 배열 이 맞 는 더 블 스 택 을 실현 합 니 다.
6450 단어 데이터 구조
#include
#include
#include
#include
/* , , 1
top , bot
*/
using namespace std;
typedef int ElemType;
const int maxn=300;
typedef struct
{ int top[2],bot[2];//
vector v;// 。
int m;// ;
}dbstack;
dbstack s;
bool init()
{ s.m=maxn;
s.top[0]=-1;
s.top[1]=s.m;
s.v.assign(maxn,0);
return true;
}
bool push(int num,int vis)
{ if(s.top[1]-s.top[0]==1)
{ puts("the stack is full");
return false;
}
if(vis==1)
{ s.top[1]--;
s.v[s.top[1]]=num;
}
else
{ s.top[0]++;
s.v[s.top[0]]=num;
}
return true;
}
pair<bool,ElemType> pop(int vis)
{ pair<bool,ElemType> m;
if(vis==0&&s.top[0]==-1)
{ puts("empty");
cout<0]<<"!!"<false;
m.second=0;
return m;
}
if(vis==1&&s.top[1]==s.m)
{ puts("empty");
cout<1]<<"!!"<false;
m.second=0; return m;
}
m.second=s.v[s.top[vis]];
m.first=true;
return m;
}
bool top(int vis)
{ if(vis==1)
s.top[vis]++;
else
s.top[vis]--;
return true;
}
bool empty1(int vis)
{ if(vis==1&&s.top[vis]==s.m)
return true;
else if(vis==0&&s.top[vis]==-1)
return true;
return false;
}
int main()
{ init();
push(1,1);
push(2,1);
push(5,0);
push(6,0);
push(7,0);
//cout<
while(!empty1(1))
{
if(pop(1).first)
cout<1 ).second<1);
}
while(!empty1(0))
{ if(pop(0).first)
cout<0).second<0);
}
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에 따라 라이센스가 부여됩니다.