본문 바로가기

2016/10

C언어 원형 큐(circular queues in C) C언어 원형 큐(circular queues in C) - 선형 큐의 문제점을 개선하기 위해 고안(= 큐의 포화 상태와 빈(empty) 상태를 구별하지 못함) - 큐의 한 칸을 비워두고 이것을 포화 상태와 빈(empty) 상태를 구분하기 위해 사용한다. [ Fig. 1 ] process of circular queue 위의 그림을 보면 (A)는 시작 부분이라 T(Tail)과 H(Head)가 동일한 위치에 있다. 즉, 이것은 큐가 비어있다는 것을 의미한다. 큐에 데이터를 삽입할 때 H가 가르키는 위치에 데이터를 삽입하게 되면 모든 큐에 데이터를 삽입했을 경우(=포화 상태) T와 H가 같은 곳을 가르키게 된다. 즉 포화 상태인지 큐가 비어있는 상태인지 알 수가 없다. 따라서 H가 가르키는 위치가 아니라 H .. 더보기
C언어 큐(Queues in C) - 연결리스트로 구현(The implementation with the linked lists) C언어 큐(Queues in C) - 연결리스트로 구현(The implementation with the linked lists) - 큐에 대한 내용은 이전 글 참고 1. 동작 원리 (1) 최근 노드를 가르키는 HEAD 포인터와 가장 오래된 노드를 가르키는 TAIL 포인터 초기화 (2 - 1) 삽입 명령 시 새로운 노드를 생성하고, 데이터를 입력한다. (2 - 2) TAIL 포인터가 가르키는 노드가 없을 경우(= 큐가 비어있을 경우) (2 - 2) HEAD와 TAIL이 새로운 노드를 가리킨다. (2 - 3) 가르키는 노드가 있을 경우, HEAD의 위치를 갱신하면서 새로운 노드를 추가한다. (3 - 1) 제거 명령 시 큐가 비어있는지 확인한다. (3 - 2) 큐에 노드가 있을 경우에 TAIL은 그 다음 노.. 더보기
C언어 큐(Queues in C) - 배열로 구현(The implementation with the array) C언어 큐(Queues in C) - 배열로 구현(The implementation with the array) - FIFO(First In First Out) 정책을 사용한다. - 먼저 삽입된 데이터가 먼저 나온다. - 선형 큐의 경우 큐의 포화상태와 빈(empty)상태를 구분하지 못한다. ( 이를 해결하기 위해 환형 큐가 고안 되었다. ) - 삽입 명령을 ENQUEUE라고 부른다. - 삭제 명령을 DEQUEUE라고 부른다. 1. 동작 원리 (1) 삽입할 위치를 가리키는 head와 내보낼 위치를 가르키는 tail의 위치를 초기화 한다. (2) 삽입 명령 시 head가 가르키는 곳에 큐의 위치에 데이터를 입력하고 head의 값을 증가시킨다. (3 - 1) 삭제 명령 시 큐가 비어있는지 확인한다. (3 -.. 더보기
C언어 스택(Stacks in C) - 연결리스트로 구현(The implementation with the linked lists) C언어 스택(Stacks in C) - 연결리스트로 구현(The implementation with the linked lists) - 스택에 관한 내용은 이전 글 참고 1. 동작 원리 (1-1) push 명령 시 새로운 노드를 생성한 후 Top 포인터가 이를 가르키게 한다. ( Top 포인터는 항상 가장 최근 노드(가장 위)를 가르킨다. ) (1-2) 각 노드들은 자신의 이전 노드를 가르킨다. ( pop 명령 시 삭제되는 노드의 이전 노드를 가르키기 위함 ) (2-1) pop 명령 시 Top 포인터가 가르키고 있는 노드의 값을 반환하고, Top 포인터는 이전 노드를 가르킨다. (2-2) 값을 반환한 노드는 삭제한다. ( 메모리를 반환한다. ) 2. 함수 설명 int stack_empty( STACK *.. 더보기
C언어 스택(Stacks in C) - 배열로 구현(The implementation with the array) C언어 스택(Stacks in C) - 배열로 구현(The implementation with the array) - LIFO(Last In First Out) 정책을 수행한다. - 가장 최근에 들어간 데이터가 가장 먼저 나온다. - 삽입 명령을 스택에서는 PUSH 라고 불리운다. - 삭제 명령은 주로 POP이라고 불리운다. 1. 동작원리 (1) 새로운 데이터를 PUSH하면 TOP은 해당 데이터를 가르킨다. (2) 데이터를 POP하면 TOP이 가르키고 있는 데이터를 반환하고, TOP은 이전 데이터를 가르킨다. [ Fig. 1 ] process of the stack, site : introduction to algorithms 3/E 2. 함수 설명 stack_empty( struct stack) : 스.. 더보기
도수분포와 그래프 도수분포와 그래프 1. 줄기와 잎 그림 (1) 변량 : 키, 몸무게, 성적 등과 같이 자료를 수량으로 나타낸 것 (2) 줄기와 잎 그림 : 줄기와 잎을 이용하여 자료를 나타낸 그림 (3) 줄기와 잎 그림 그리기 - 줄기와 잎을 정한다. - 세로선을 긋고, 세로선의 왼쪽에 줄기의 수를 쓴다. - 오른족에 잎의 수를 크기가 작은 순서대로 쓴다. - a|b를 설명한다. 2. 도수분포표 (1) 계급 : 변량을 일정한 간격으로 나눈 구간 - 계급의 크기 : 구간의 너비 또는 계급의 양 끝값의 차 - 계급의 개수 : 변량을 나눈 구간의 수 - 계급값 : 계급을 대표하는 값으로 그 계급의 가운데 값 (계급값) = (계급의 양 끝 값의 합) / 2 (2) 도수 : 각 계급에 속하는 자료의 개수 (3) 도수분포표 : 주.. 더보기
이차함수 이차함수 1. 이차함수의 뜻 함수 y = f(x)에서 f(x)가 x에 관한 이차식 y = ax² + bx + c(a, b, c는 상수, a != 0)로 나타내어 질 때, y를 x에 관한 이차함수라 한다. 2. 이차함수 y = x²의 그래프 (1) 포물선 : 이차함수의 그래프와 같은 모양의 곡선을 포물선이라 한다. - 축 : 포물선은 선대칭도형으로 그 대칭축을 포물선의 축이라 한다. - 꼭짓점 : 포물선과 축의 교점을 꼭짓점이라 한다. (2) 이차함수 y = x²의 그래프 - 그래프의 모양 : 아래로 볼록한 포물선 - 꼭짓점의 좌표 : 원점 (0, 0) - 축의 방정식 : x = 0(y 축) - 그래프의 증가 및 감소 : x 0일 때, x의 값.. 더보기
6장 - C언어 연산자(Operators)(2) 6장 - C언어 연산자(Operators)(2) 1. 비트 연산자(Bitwise operators) 비트 연산자는 연산하려는 수의 비트 단위에서 처리가 이루어집니다. ~ NOT 연산(비트 반전) & AND 연산 | OR 연산 ^ XOR 연산 >> a 비트를 우로 a만큼 이동 >, , > 2를 예로 들어보면, 10진수 8의 비트는 1000(2)입니다. 이것을 우측으로 2번 이동시키면 0010(2)이 됩니다. 8 > 2); } 앞에서 설명한 내용을 소스코드로 작성한 것입니다. 실습해보면서 더욱 더 이해를 굳히시길 바랍니다. 2. 실습 문제 (1) 입력받은 세자리 수를 거꾸로 출력하라. ( 입력 : 123 > 출력 : 321 ) (2) 물건 가격과 지불 금액을 입력받고, 거스름돈에 대해서 5000원, 1000.. 더보기
일차함수 일차함수 1. 일차함수의 뜻 함수 y = f(x)에서 y가 x에 관한 일차식 y = ax + b(a, b는 항수, a != 0)로 나타내어질 때, 이 함수 f를 일차함수라고 한다. 2. 일차함수 y = ax( a!= 0 )의 그래프 (1) 원점 (0, 0)을 지나는 직선이다. (2) a > 0 일 때 - 제 1, 3사분면을 지난다. - x의 값이 증가하면 y의 값도 증가한다. - 오른쪽 위로 향하는 직선이다. (3) a < 0 일 때 - 제 2, 4 사분면을 지난다. - x의 값이 증가하면 y의 값은 감소한다. - 오른족 아래로 향하는 직선이다. (4) a의 절댓값이 클수록 y축에 가까워진다. ( a의 절댓값이 작아질수록 x축에 가까워진다. ) 3. 일차함수 y = ax + b(a != 0)의 그래프 (.. 더보기
5장 - C언어 연산자(operators)(1) 5장 - C언어 연산자(operators)(1) ※ 모든 소스코드를 실행해 보세요. 1. 사칙 연산자 - 기본적인 사칙연산(+, -, *, /)을 포함하여 나머지(%)를 구하는 연산자입니다. #include int main (void) { int num1, num2; num1 = 20; num2 = 15; printf("num1 + num2 = %d\n", num1 + num2); printf("num1 - num2 = %d\n", num1 - num2); printf("num1 * num2 = %d\n", num1 * num2); printf("num1 / num2 = %d\n", num1 / num2); printf("num1 %% num2 = %d\n", num1 % num2); return 0; .. 더보기