9 도 OJ 1108: 스 택 사용 (스 택)

2639 단어 dp창고OJ9 도
시간 제한: 1 초
메모리 제한: 32 메 가
특수 판정 문제: 아니오
제출: 6705
해결: 1974
제목 설명:
    스 택 은 기본 적 인 데이터 구조 이다.스 택 은 두 가지 기본 작업 방식, push 와 pop 을 가지 고 있 습 니 다.Push 의 값 은 스 택 꼭대기 에 눌 러 넣 고 pop 은 스 택 꼭대기 의 값 을 팝 업 합 니 다.이제 창고 의 사용 을 검증 해 보 겠 습 니 다.
입력:
     각 그룹의 테스트 데이터 에 대해 첫 번 째 줄 은 정수 n, 0 < n < = 10000 (n = 0 종료) 입 니 다.다음 n 줄 에서 각 줄 의 첫 번 째 문 자 는 'P' 또는 'O' 또는 'A' 일 수 있 습 니 다.'P' 라면 뒤에 정수 가 따라 와 서 이 데 이 터 를 창고 에 넣 는 것 을 표시 합 니 다.'O' 라면 스 택 꼭대기 의 값 pop 을 표시 합 니 다. 스 택 에 요소 가 없 으 면 이번 작업 을 무시 합 니 다.'A' 라면 현재 스 택 지붕 의 값 을 묻 고 스 택 이 비어 있 으 면 'E' 를 출력 합 니 다.창고 가 비어 있 기 시작 하 다.
출력:
    각 그룹의 테스트 데이터 에 대해 명령 문자 에 따라 스 택 을 처리 합 니 다.그리고 모든 'A' 작업 에 대해 출력 당시 창고 의 값 을 한 줄 씩 차지 하고 창고 가 비어 있 으 면 'E' 를 출력 합 니 다.각 그룹의 테스트 데이터 가 완성 되면 빈 줄 을 출력 합 니 다.
샘플 입력:
3
A
P 5
A
4
P 3
P 6
O 
A
0

샘플 출력:
E
5

3

원본:
2011 년 길림대학 컴퓨터 연구 생기 시험
생각:
기본 스 택 데이터 조작.
코드:
#include <stdio.h>
#include <string.h>
 
#define N 10000
 
int stack[N];
int top;
 
void init()
{
    top = 0;
}
 
int notEmpty()
{
    if (top <= 0)
        return 0;
    else
        return 1;
}
 
int push(int x)
{
    if (top < N)
    {
        stack[top++] = x;
        return 1;
    }
    return 0;
}
 
int pop(int *x)
{
    if (notEmpty())
    {
        *x = stack[--top];
        return 1;
    }
    else
        return 0;
}
 
int printTop()
{
    if (notEmpty())
    {
        printf("%d
", stack[top-1]);         return 1;     }     else     {         printf("E
");         return 0;     } }   int main(void) {     int n, i;     char op[2];     int x;       while (scanf("%d", &n) != EOF && n)     {         init();         for (i=0; i<n; i++)         {             scanf("%s", op);             if (op[0] == 'A')                 printTop();             else if (op[0] == 'P')             {                 scanf("%d", &x);                 push(x);             }             else if (op[0] == 'O')                 pop(&x);             //for (int j=0; j<top; j++)             //  printf("%d\t", stack[j]);             //printf("
");         }         printf("
");     }       return 0; } /**************************************************************     Problem: 1108     User: liangrx06     Language: C     Result: Accepted     Time:10 ms     Memory:952 kb ****************************************************************/

좋은 웹페이지 즐겨찾기