티스토리 뷰
앞의 글에서 살펴본 스택의 기본 코드에 입력과 출력을 추가해 보자. 다음과 같은 형식으로 스택 명령을 처리하는 프로그램을 만들어보자.
앞 글에서 살펴본 stack.h와 stack.c를 이용하여 작성하면 된다. typedef int element; 로 정의되어 있으므로 스택의 요소 타입은 int다.
#include "stack.h"
stack_t stack; // 스택을 지역변수 객체로 선언. 이 변수가 스택객체를 나타낸다.
char command[10];
void doit() {
elem_t val;
scanf_s("%s", command, 10); // 명령을 한 줄씩 읽어서
if (strcmp(command, "end") == 0) {
return;
}
if (strcmp(command, "push") == 0) {
scanf_s("%d", &val);
push(&stack, val);
}
else if (strcmp(command, "pop") == 0) {
printf("value = %d\n", pop(&stack));
}
else if (strcmp(command, "peek") == 0) {
printf("value = %d\n", peek(&stack));
}
else {
printf("명령어 오류: %s\n", command);
return;
}
print_stack(&stack, command); // 각 명령을 수행한 후의 상태를 출력한다.
}
int main(void)
{
init_stack(&stack);
while (strcmp(command, "end") != 0) {
doit();
}
return 0;
}
이렇게 출력하기 위해서는 print_stack 함수가 구현되어야 한다. print_stack 함수는 현재의 스택의 상태를 명령문과 함께 출력해준다.
void print_stack(stack_t* s, char* token)
{
printf("%-4s [stack] ", token);
for (int i = 0; i <= s->top; i++) {
printf("%s", str(s->data[i])); // elem_t 타입에 따라 형식지정자 수정 필요
}
printf("\n");
}
'C로 만드는 자료구조' 카테고리의 다른 글
원형 큐 자료구조와 큐 출력 (0) | 2020.03.12 |
---|---|
스택응용 - infix 2 postfix 변환 (2) | 2020.03.12 |
스택 자료구조의 활용 - 후위표기식 (0) | 2020.03.12 |
스택 자료구조와 구현 (0) | 2020.03.12 |
C로 만드는 자료구조 연재를 시작합니다 (0) | 2020.03.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- indexof
- CompareTo
- python example
- 스트링 +
- python exercise
- sort key
- max
- typedef
- TypeError
- 패턴
- C++ 클래스
- rust
- 동적바인딩
- 자바regex
- Iterator
- ToString
- format
- contentEquals
- APPEND
- follow
- 지연계산
- Camel Style
- 콜렉션
- 이터러블
- 이터레이터
- 스트링
- comparable
- zip
- contains
- Lazy evaluation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함