앞선 포스팅에서 기본적인 네트워크의 의미와 구조를 배우며, 범위에 따라 네트워크를 분류했다(lan, wan). 이번에는 메시지 교환 방식에 따라 네트워크를 분류해보겠다. 호스트들은 네트워크를 통해 어떤 방식으로 메시지를 주고받을까? (호스트의 의미를 모르겠다면, 이전 포스팅을 참고하자)네트워크로 메시지를 주고받는 방식은 대표적으로 회선 교환 방식과 패킷 교환 방식으로 나눌 수 있다. 각 방식을 사용하는 네트워크를 각각 회선 교환 네트워크, 패킷 교환 네트워크라고 한다. 회선 교환 방식회선 교환 방식은 1. 메시지 전송로인 회선(circuit)을 설정 2. 그 회선은 한 트랜잭션의 정보 전달만을 위한 전용통신로가 됨(독점) 이를 통해 메시지를 주고받는 방식이다.즉, 회선(전송로)를 먼저 확보하고 그 전..
컴퓨터 네트워크와 인터넷의 개념컴퓨터 네트워크란, 여러 장치가 연결되어 서로 정보를 주고받을 수 있는 통신망을 의미한다.여러 장치들이 네트워크를 통해 서로 연결되면 주변의 장치하고만 정보를 주고 받는 것이 아니라, 네트워크와 연결된 지구 반대편에 있는 장치와도 정보를 주고 받을 수 있다. 이를 가능하게 하는 기술이 바로 인터넷이다. 인터넷이란, 여러 네트워크를 연결한 네트워크의 네트워크이다. 즉, 네트워크를 연결하는 네트워크이다. 거시적 관점으로 네트워크 기본 구조 파악하기본격적으로 네트워크를 학습하기 전에 거시적인 관점에서 네트워크의 큰 그림을 그려 보며 필수 배경지식을 알아보겠다. 앞서, 네트워크가 여러 장치가 서로 연결되어 정보를 주고받을 수 있는 통신망이라고 했다.이 통신망의 모양은 노드(=정점..
컴퓨터의 핵심 부품 CPU를 하나하나 뜯어보기 전에큰 덩어리부터 생각해본다. 다시금 컴퓨터 메인 보드를 뜯어와 보도록 하자. 오늘 살펴볼 것은 CPU 그중에서도 ALU와 제어장치이다. CPUCPU는 컴퓨터의 두뇌이다. 메모리에 저장된 명령어를 읽고, 해석해고, 실행하는 부품이다. (예시 : intel x86)1. 메모리에 저장된 명령어를 읽어들이고, 해석하고 실행하는 장치이다. 2. CPU 내부 : ALU(계산 담당) + 제어장치(명령어 읽고 해석함) + 레지스터(작은 임시 저장 장치) 1. ALUALU는 산술연산 장치, 한 마디로 계산하는 부품이다. 계산을 하기 위해서는 피연산자(숫자)와, 수행할 연산자(+-/*)가 필요하다. ALU가 받아들이는 정보 // 피연산자 + 제어신호ALU는 래지스터를..
반복(Iterative search) 으로 구현#include #include // 트리 노드 정의typedef struct treeNode { int key; struct treeNode* leftChild; struct treeNode* rightChild;} treeNode, * treePointer;// modifiedSearch 함수 정의treePointer modifiedSearch(treePointer root, int k) { treePointer p = root; treePointer lastExamined = NULL; // 마지막으로 탐색한 노드를 저장할 변수 while (p != NULL) { lastExamined = p; // 현재 노..
이진탐색트리(Binary Search Tree)의 개념이진탐색트리란 이진탐색(binary search)과 연결리스트(linked list)를 결합한 자료구조의 일종이다.데이터의 삽입, 삭제, 탐색 등이 자주 발생하는 경우에 효율적으로 쓰인다.**(복습)- 이진트리 - 한 노드의 자식 노드가 최대 2개(왼쪽,오른쪽)인 트리- 포화 이진 트리 : 모든 레벨의 노드가 꽉 차있으며, 단말 노드를 제외한 모든 노드의 차수가 2인 이진 트리.- 완전 이진 트리 : 단말 노드들이 트리 왼쪽부터 채워진 형태의 이진 트리.- 높이 균형 트리 : 모든 단말 노드의 깊이 차이가 많아야 1인 이진 트리.- 완전 높이 균형 이진 트리 : 왼쪽 하위 트리와 오른쪽 하위 트리의 높이가 같은 이진 트리.이진탐색트리의 정의이진탐색트리..
힙의 구현에 어울리는 것은? 연결리스트 아니라 배열앞서 우선순위 큐의 구현에 어울리는 것은 힙으로 결론이 났다.그렇다면 힙의 구현방법에 대해서 고민해보자. 힙은 트리이고 트리를 구현하는 방법에는 배열과 연결리스트가 있다. 이 둘 중 뭘 이용해야 할까? 정답은 배열이다.완전 이진 트리의 구조를 갖고 또 그 구조를 유지해야 하는 힙은 배열 기반으로 구현해야 한다. 연결리스트를 기반으로 힙을 구현하면, 새로운 노드를 힙의 '마지막 위치'에 추가하는 것이 쉽지 않기 때문이다. 배열 기반 힙을 구현하려면?배열을 기반으로 투리를 구성하는 방법을 요약하자면 다음과 같다.노드에 고유의 번호를 부여한다. 그리고 그 번호가 각 노드의 데이터가 저장 될 배열이 인덱스 값이 된다. 위 문장을 그림으로 설명하자면 다음과 같다...