목록Programing (133)
공부중
int의 크기가 64bit OS에 맞춰서 변할 줄 알았는데 int의 크기는 똑같다는 결과가 나왔었다 하지만 주소의 크기는 변했을꺼라 믿고 다시 Visual Studio 2012를 켯다. 소스코드는 다음과 같다. #include int main() { std::cout
이번에는 이진 트리를 구현 해보기 전에.. 이진 트리는 뭔가용?? 매우 간단 하게 설명하면 위 그림처럼 자식 노드가 2개씩 달린 트리이다. 이진 트리는 다음 두 조건을 만족 해야 한다. 루트 노드를 중심으로 두 개의 서브 트리로 나뉘어진다.나뉘어진 두 서브 트리도 모두 이진 트리어야 한다. 그러면 다음 구조는 이진 트리가 맞을까?? 이것을 보고 이진 트리가 아닌거 같지만 이것도 이진 트리가 맞다 왜냐하면 이진 트리 관련해서 다음의 내용이 추가로 정의 되어있다. 노드가 위치할 수 있는 곳에 노드가 존재하지 않는다면 공집합(empty set)노드가 존재하는 것으로 간주 공집합 노드도 이진 트리의 판단에 있어서 노드로 인정! 그러므로 공집합까지 보이면 다음 그림과 같이 된다. 이러한 공집합 노드 때문에 서브 ..
이번에는 트리 자료 구조이다. 트리(Tree)는 말그대로 … 나무이다. 트리구조는 나무를 보고 나뭇가지가 쭉쭉 뻗어있는 모습이 연상되서 이름이 그렇게 지어진 것 같다. 이렇게 나뭇가지처럼 뻗은 모습이 연상 된다. 트리는 계층적 관계(Hierarchical Relationship)를 표현 한 자료 구조이다. 단순히 무엇인가 저장하고 꺼내는 것이 전부가 아닌 무엇인가 표현하는 것이다 단지 표현을 위해서 저장과 삭제라는 기능이 제공되어 있을 뿐 이다. 트리가 아래로 뻗으나 옆으로 뻗으나 중요치는 않다. 중요한 것은 가지가지를 늘려가며 뻗어간다는 사실이다. 이러한 구조도 트리 구조이다. 방향만 다르고 가지가 뻗어가는 모습은 같지 않은가? 일단 트리에 관해서 용어를 설명하자면 … 노드 node트리의 구성요소에 해..
IP는 Internet Protocol의 약자로 인터넷 상에서 데이터를 송수신할 목적으로 컴퓨터에게 부여하는 값이다. 반면 PORT번호는 컴퓨터에게 부여하는 값이 아닌, 프로그램상에서 생성되는 소켓을 구분하기 위해 소켓에 부여되는 번호를 뜻한다. ∙인터넷 주소(Internet Address) 인터넷에 컴퓨터를 연결해서 데이터를 주고받기 위해서는 IP주소를 부여 받아야 한다. IP주소 체계는 두 종류로 나누어진다. IPv4(Internet Protocol version 4)4바이트 주소체계IPv6(internet Protocol version 6)16바이트 주소체계네트워크 주소(네트워크 ID)란 네트워크의 구분을 위한 IP주소의 일부를 말한다. IPv4 기준의 4바이트 IP주소는 네트워크 주소와 호스트(컴..
∙프로토콜(Protocol) 프로토콜이란 컴퓨터 상호간의 대화에 필요한 통신규약이라고 볼 수 있다. 쉽게 말해서 서로 데이터를 주고 받기 위해서 정의해 놓은 약속을 뜻한다. ∙소켓의 생성 #include int socket(int domain, int type, int protocol);성공 시 파일 디스크립터, 실패 시 -1 반환domain소켓이 사용할 프로토콜 체계(Protocol Family)정보 전달type소켓의 데이터 전송방식에 대한 정보 전달protocol두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달 ∙프로토콜 체계(Protocol Family) socket 함수의 첫 번째 인자로 생성되는 소켓이 사용할 프로토콜의 부류정보를 전달해야 한다. 이러한 부류정보를 가리켜 '프로토콜 체계'라 한다...
정수형이 서버세미나를 한다고 해서 덥석 물어볼려고 한다 그전에 정리를 조금 해봐야겠다.. ∙네트워크 프로그래밍이란? 네트워크로 연결되어있는 서로 다은 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것. 운영체제에서 소켓(Socket)이라는 것을 제공하기 때문에 물리적인 연결을 기반으로 하는 소프트웨어적인 데이터 송수신 방법을 고민할 필요가 없어졌다. 이는 물리적으로 연결된 네트워크상에서의 데이터 송수신에 사용할 수 있는 소프트웨어적인 장치를 의미한다. ∙전화 받는 소켓의 구현 순서비유대상함수1 전화기 구입socket 2 전화번호bind 3 전화기의 케이블 연결listen 4 수화기를 들기accept #include int socket(int domain, int type, int protocol);성공..
이전 글에 이어서 원형 큐를 구현 해보겠습니다. Candy.h#pragma once enum eCandy { eRed = 1, eGreen, eBlack, }; class Candy { public: Candy(); virtual ~Candy(); virtual void SeeCandy() = 0; private: }; class CRedCandy : public Candy { public: CRedCandy(); virtual ~CRedCandy(); void SeeCandy(); private: }; class CGreenCandy : public Candy { public: CGreenCandy(); virtual ~CGreenCandy(); void SeeCandy(); private: }; cl..
이번에 보일 자료는 큐(Queue)이다. 큐는 바로 먼저 들어간 것이 먼저 나오는 선입선출(先入先出), FIFO(First-In, First-Out) 구조의 자료구조 이다. 큐도 스택과 같이 우리 주변에서 많이 살펴볼 수 있다. 예를 들자면.. 이런 주사기가 있겠고. 이렇게 줄서기 등등 스택과 같이 큐도 그렇게 어렵지 않은 개념의 자료구조 이다. 간단하게 생각하기에는 "뭐 스택에서 조금만 바꿔주면 큐가 되겟네?" 라고 생각할 수 있다. 그럼 일단 큐의 배열 구현 모델을 살펴보자 큐에 데이터를 삽입할 때를 표현해본 것이다 여기서 F는 Front의 약자이고 R은 Rear의 약자로 F는 큐의 맨 앞 머리, R은 큐의 맨 뒤 꼬리를 가리키는 것이다. 그리고 삭제할 때를 살펴보자 이 그림에서 보이는 방식은 F가 ..