
선형큐 큐는 들어온 순서대로 처리되어 나가는 자료구조다. 배열 기반 큐의 구조체 정의는 다음과 같다. #define MAX_Q_SIZE 10// 큐의 최대 크기 typedef int elem_t; typedef struct queue_t { elem_t data[MAX_Q_SIZE]; int front; int rear; } queue_t; 여기서도 요소타입을 typedef int element;와 같이 선언하였음을 확인할 수 있다. 위와 같이 정의된 큐의 데이터에 대해 적용가능한 기능을 다음과 같이 함수 선언으로 미리 정의한다. (이것을 추상데이터타입(ADT)이라고 한다) void init(queue_t* q); int is_full(queue_t* q); int is_empty(queue_t* q);..

이번에는 스택을 이용하여 중위표기식을 후위표기식으로 바꾸는 것을 해보자. 실행결과는 다음과 같이 보여주고 싶다. 중위표기식에서 후위표기식으로 바꾸기 위해서는 다음과 같은 사항을 고려해야 한다. (1) 괄호를 처리할 수 있어야 한다. 괄호는 이항연산자가 아니므로 별도로 처리되어야 하고 괄호로 묶인 부분은 최우선으로 실행된다. (2) 이항연산자의 우선순위가 고려되어야 한다. 일단 우리는 다음과 같은 우선순위를 고려한다. 우선순위 연산자 1 &, | (and, or) 2 >, =, 2 - b * c ... 라는 수식을 생각해 보자. >는 -보다 낮고 -는 *보다 낮으므로 *가 수행되고 나서 -와 >가 수행될 수 있다. ... 부분에 >보다 더 낮은 우선순위 연산(&나 |)이 오면 드디어 >는 출력될 수 있다...

앞의 글에서 살펴본 스택의 기본 코드에 입력과 출력을 추가해 보자. 다음과 같은 형식으로 스택 명령을 처리하는 프로그램을 만들어보자. 앞 글에서 살펴본 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"..
- Total
- Today
- Yesterday
- 패턴
- max
- python exercise
- 동적바인딩
- Camel Style
- Iterator
- typedef
- rust
- follow
- APPEND
- C++ 클래스
- zip
- contains
- comparable
- python example
- sort key
- CompareTo
- 이터러블
- indexof
- 이터레이터
- format
- 자바regex
- TypeError
- 지연계산
- Lazy evaluation
- 스트링
- contentEquals
- 콜렉션
- ToString
- 스트링 +
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |