[소스 코딩] ※ 이진 트리는 이전에 구현한 'BinaryTree2.h', 'BinaryTree2.c'를 활용※ 스택은 이전에 구현한 'ListBaseStack.h', 'ListBaseStack.c'를 활용 ■ ExpressionTree.h#ifndef EXPRESSIONTREE_H_#define EXPRESSIONTREE_H_ #include "BinaryTree2.h" BTreeNode * MakeExpTree(char exp[]); // 입력 받은 후위 표기법 수식을 수식 트리로 변환int EvaluateExpTree(BTreeNode * bt); // 수식 트리의 연산 void ShowPrefixTypeExp(BTreeNode * bt); // 변환된 수식 트리를 전위 표기법으로 출력void Sh..
[수식 트리의 개념]- 전위/중위/후위 표기법과 같은 하나의 수식을 표현하는 방식 ■ 그림(수식 트리의 예) ※ 수식 예: 9 – 6 / 2 + 4 ■ 그림(수식 트리의 연산 과정) [수식 트리의 구현 과정]- 중위 표기법의 수식을 입력 받음 → 수식 트리로 표현- 연산자, 피연산자는 스택으로 관리 [수식 트리의 표현]- 후위 표기법의 수식에서 앞쪽에 등장하는 피연산자와 연산자로 트리의 하단을 만들고, 계속해서 뒤 (피)연산자들을 그 위로 계속해서 구성해 나감 ■ 그림(수식 트리의 구성 과정) - 후위 표기법 수식 '8 2 - 2 /'를 스택을 활용하여 수식 트리로 구성 - 수식에서 조회된 문자가 '피연산자'이면 스택에 넣음 - 위와 동일 - 수식에서 조회된 문자가 '연산자'이면 스택에 저장된 피연산자를..
[순회 종류] ■ 그림(중위, 후위, 전위) 1. 중위 순회: 루트 노드의 왼쪽 자식 노드를 먼저 방문 후에 루트 노드를 중간에 방문하는 방식2. 후위 순회: 루트 노드의 왼쪽 자식, 오른쪽 자식을 방문 후 루트 노드를 마지막에 방문하는 방식3. 전위 순회: 루트 노드를 먼저 방문 후 왼쪽 자식, 오른쪽 자식을 방문하는 방식 [순회의 재귀] ■ 그림(중위 순회 재귀) ■ 이진 트리를 대상으로 중위 순회를 할 경우의 순회 순서1단계: 왼쪽 서브 트리의 순회2단계: 루트 노드의 방문3단계: 오른쪽 서브 트리의 순회 ※ 공집합(NULL) 값을 가진 노드를 방문하기 전까지 하위 단계로 순회를 반복 [소스 코딩] ※ 이전에 사용한 '이진 트리 구현(BinaryTree.h, BinaryTree.c)' 소스를 업데이..
[배열 기반과 연결 리스트 기반] ■ 그림(배열 기반 트리) - 트리가 완성 된 이후부터는 그 트리를 대상으로 매우 빈번한 탐색이 이뤄지기 때문에 연결 리스트보다 탐색이 빠른 이점이 있음- 노드에 번호가 부여됨 ※ 인덱스 '0'은 사용해도 문제없으나 인덱스 번호와 노드 번호 매치를 위해 편의상 사용하지 않음 ■ 그림(연결 리스트 기반 트리) - 연결 리스트 구성 형태와 트리 형태와 일치한다는 점 ※ 우선 연결 리스트 기반으로 구현. 배열 기반은 '완전 이진 트리의 구조를 갖는 '힙(heap)'이라는 자료구조 구현 시 활용할 예정 [이진 트리의 ADT] BTreeNode * MakeBTreeNode(void);- 이진 트리 노드를 생성하여 그 주소 값을 반환 int GetData(BTreeNode * bt..
[트리의 개념]- 트리는 계층적 관계(Hierarchical Relationship)를 표현하는 자료구조 ■ 그림(트리의 계층 개념) ■ 중요 포인트- 데이터의 저장, 검색 및 삭제 등의 기능의 정의보다, 무엇인가를 표현하기에 적절히 정의되었는지가 더 중요 [트리 관련 용어] ■ 그림(트리 표현) ■ 관계- 노드간에는 '부모(Parent), 자식(Child), 형제(Sibling)'의 관계가 성립되어 있음- 노드 'A'는 노드 'B, C, D'의 부모 노드- 노드 'B, C, D'는 노드 'A'의 자식 노드- 노드 'B, C, D'는 부모 노드가 같으므로, 서로가 서로에게 형제 노드 1. 노드(Node)- 트리의 구성요소에 해당하는 'A, B, C, D, E, F'와 같은 요소 2. 간선(Edge)- 노..
1.판단 (Judgment)- 애매모호한 상황에서도 항상 현명한 결정을 내린다.- 문제가 발생한 근본적인 원인을 파악하고 해결책까지 도달한다. - 전략적으로 생각하고 스스로 어떤 사람인지, 어떤 것을 시도하고 있는지 명확하게 표현해야 한다. 2.의사소통 (Communication)- 지위와 상관없이 경청해서 상대방의 의도와 목적을 정확하게 판단할 수 있도록 한다.- 말을 하든 글을 쓰든 간결하고 분명하게 해야 한다. 3.임팩트 (Impact)- 중요한 업무에 대해 지속적으로 뛰어난 업무능력을 보여준다.- 업무의 절차적인 과정보다는 뛰어난 성과(great results)에 집중한다. 4.호기심 (Curiosity)- 전반적인 회사의 전략, 시장, 고객에 대해 빠르게 이해한다.- 광범위한(전문분야를 벗어나는..
[덱의 개념] - 스택과 큐의 특성의 조합한 형태로서 데이터를 앞으로도 뒤로도 넣을 수 있고, 앞으로도 뒤로 뺄 수 있는 자료구조 [덱의 ADT] void DequeInit(Deque * pdeq);- 덱의 초기화를 진행- 덱 생성 후 제일 먼저 호출되어야 하는 함수 int DQIsEmpty(Deque * pdeq);- 덱이 빈 경우 TRUE(1)을 반환, 그렇지 않은 경우 FALSE(0)을 반환 void DQAddFirst(Deque * pdeq, int data);- 덱의 '머리'에 데이터를 저장. data로 전달된 값을 저장 void DQAddLast(Deque * pdeq, int data);- 덱의 '꼬리'에 데이터를 저장. data로 전달된 값을 저장 int DQRemoveFirst(Deque..
[주제] - 주문한 음식이 포장되어 나오기를 기다리는 고객을 위한 대기실을 만드려고 함 [조건] - 운영 시간은 1시간- 고객의 첫 주문 이후 15초당 다음 1명씩 주문- 고객은 총 3가지 햄버거 중 무작위로 1개만 주문가능- 햄버거 조리 시간(치즈버거 12초, 불고기버거 15초, 더블버거 24초)- 한 번에 하나의 햄버거만 조리가능- 조리가 끝나기 전까지 다음 주문을 받지 않음- 주문 처리가 된 고객은 대기실에서 나옴 [목표] - 1시간 동안 여러 종류의 햄버거를 요리하는 상황에서 고객을 대기시킬 수 있는 대기실의 크기를 산출하기 위하여 크기에 따라 얼마나 안정적으로 수용할 수 있는지 확률적으로 나타내기 ※ 예) 수용인원이 30명인 공간: 안정적으로 고객을 수용할 확률은 50%(시뮬 10회 시도 시 5..
[연결 리스트 기반 스택과 큐의 차이점] - 스택은 'push'와 'pop'이 같은 위치에서 처리가 되는 반면, 큐는 'enqueue'와 'dequeue'가 다른 위치에서 처리가 됨 [소스 코딩] ■ ListBaseQueue.h #ifndef LISTBASEQUEUE_H_#define LISTBASEQUEUE_H_ #define TRUE 1#define FALSE 0 typedef struct _node{ int data; struct _node * next;} Node; typedef struct _lQueue{ Node * front; // 삭제할 노드를 가리키는 용도 Node * rear; // 생성된 노드를 가리키는 용도} LQueue; typedef LQueue Queue; void QueueI..
- Total
- Today
- Yesterday
- 일기
- 상황
- 알고리즘
- wfd
- Delphi
- 응용
- SysUtils
- Reference
- 왕초보 영어회화 100일의 기적
- RA
- Pte
- 여행영어 100일의 기적
- tdataset
- System
- java
- 교육센터
- 영어
- 문법
- VCL
- SWT
- 작문
- 대상
- 자료구조
- 정렬
- 스택
- 설명
- 말하기
- 독해
- 계산기
- ADODB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |