목록Programing (136)
공부중
정수형이 서버세미나를 한다고 해서 덥석 물어볼려고 한다 그전에 정리를 조금 해봐야겠다.. ∙네트워크 프로그래밍이란? 네트워크로 연결되어있는 서로 다은 두 컴퓨터가 데이터를 주고 받을 수 있도록 하는 것. 운영체제에서 소켓(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가 ..
이번에 설명하고자 하는 자료는 스택(Stack)이다. 스택은 한 문장으로 표현하면 "먼저 들어간 것이 나중에 나온다." 위 문장대로 스택은 후입선출(後入先出)또는 LIFO(Last-In, First-Out)의 자료구조라고 불린다. 이러한 스택의 구조는 우리 주변에서 많이 살펴볼 수 있다. 이러한 프링글스라던가.. 이런 장난감 같은 경우도 스택구조이다. 먼저 배열기반으로 구현해보았다. Candy.h#pragma once enum eCandy { eRed = 1, eGreen, eBlack, }; class Candy { public: Candy(); ~Candy(); virtual void TasteCandy() = 0; virtual void SeeCandy() = 0; private: }; class ..
양방향 연결리스트 혹은 이중 연결 링크드 리스트 라고 불리는 이 자료구조는 이름 그대로 양방향성을 띄는 구조이다. 한가지 방향성을 가진 모습이 이러 하였다면.. 양방향 연결리스트는 이렇게 양방향성을 가지고 있다. 이렇게 양방향성을 가지면서 한방향성보다 더욱 편리하게 이용할 수 있다. Node.h#pragma once class Node { public: Node(); ~Node(); private: friend class CNodeManager; int nSaveData; Node *Prev; Node *Next; };Node.cpp#include #include "Node.h" Node::Node() { std::cout
원형 연결리스트는 말 그대로 원형으로 구조가 되어있는 연결리스트이다. 예를 들자면 이러한 구조가 될 것 같다. 계속 끝없이 순환 하는 연결리스트이다.ss 앞에서 만들었던 연결리스트의 마지막 노드가 맨 앞의 노드를 가리키면 뱀이 꼬리를 물 듯 원형의 모양이 자연스레 나오게 된다. 나름 원형 리스트를 새로 짜본다고 만들어 본거지만 뭔가 찜찜함은 여전하다.. Node.h#pragma once class Node { public: Node(); ~Node(); private: friend class CNodeManager; Node *Next; int nSaveData; };Node.cpp#include #include "Node.h" Node::Node() { std::cout
이전 글에 이어서 이번에는 데이터 조회를 살펴보자. NodeManager.cpp - void CNodeManager::PrintNode() void CNodeManager::PrintNode() { if( NULL == Head ) { std::cout
앞 글에서 나온 소스를 설명 해보고자 한다. 먼저 앞의 소스코드에서 데이터를 담을 때 마다 동적으로 메모리를 잡아주고 필요 없을 시 삭제하고 하였다. 이것을 간단한 비유를 들어보자. Node.h#pragma once class Node { public: Node(); ~Node(); private: friend class CNodeManager; int nSaveNUM; Node *Next; };이 Node클래스를 화물 컨테이너에 비유를 해보자. 직접 그림을 그리긴 했지만 .. 기차가 맞으니 오해는 없길 바랍니다. 화물 컨테이너가 하나도 없을 때 기차의 모습은 이러할 것이다. 여기에 화물이 1개가 추가 되었을 때 이러한 모습일 것이다. 그리고 컨테이너 안에는 데이터가 들어가 있을 것이다. 또한 이 기차는..