데이터 구조의 순환 대기 열

묘사 하 다.
주어진 공간 구조의 순서 에 따라 대기 열 을 순환 시 키 고 대기 열 을 채 우 는 방법 은 하나의 요소 공간 을 적 게 사용 하도록 규정 합 니 다.예 를 들 어 5 개의 요소 공간 구조 순환 대기 열 을 지정 하면 4 개의 요소 만 저장 할 수 있 습 니 다.입 대 및 출 대 작업 에 따라 대열 의 마지막 요소 저장 상황 을 판단 하고 마지막 대열 의 요소 값 을 출력 합 니 다. 즉, 주어진 입 대 및 출 열 작업 을 완료 한 후 한꺼번에 모든 팀 의 요소 값 을 출력 합 니 다.순서 대기 열 로 완성 을 요구 합 니 다.
입력
입력 한 첫 번 째 행 위 는 자연수 n 으로 구 조 를 요구 하 는 순서 순환 대기 열 공간 수 를 표시 합 니 다.두 번 째 행 위 는 k 를 조작 하고 그 다음 에 k 행 위 는 팀 에 들 어가 서 조작 하 며 각 줄 은 한 번 씩 조작 합 니 다.입단 용 in 은 출전 용 out 은 입단 이 라면 in 이 빈 칸 을 사이 에 두 고 하나의 정수 로 입단 요소 수 치 를 나타 낸다.
출력
출력 이 모든 입 대 를 완료 한 후, 한꺼번에 팀 원 소 를 출력 합 니 다.빈 칸 으로 격 리 하 다.팀 이 모든 조작 을 완성 한 후에 비어 있 지 않다 고 가정 할 수 있다.
샘플 입력
4 7 in 1 in 2 in 5 in 6 out out in 8
샘플 출력
5 8
#include
#include
int n;
using namespace std;
typedef struct
{
    int *base;
    int front;
    int rear;
}sque;
void Init(sque &l)
{
    l.base=(int *)malloc(n*sizeof(int));
    if(!l.base)return ;
    l.front=l.rear=0;
    return ;
}
int rudui(sque &q)
{
    int in;
    cin>>in;
    if((q.rear+1)%n==q.front)return 0;
    q.base[q.rear]=in;
    q.rear=(q.rear+1)%n;
    return 1;
}
int chudui(sque &q,int &e)
{
    if(q.front==q.rear)return 0;
    e=q.base[q.front];
    q.front=(q.front+1)%n;
    return 1;
}
int main()
{
    sque l;
    string c;
    int m,e,f=0;
    while(cin>>n>>m)
    {
        Init(l);
        while(m--)
        {
            cin>>c;
            if(c=="in")rudui(l);
            else if(c=="out")chudui(l,e);
        }
        while(chudui(l,e))
            {
                if(f==0)
                cout<

좋은 웹페이지 즐겨찾기