728x90

분류 전체보기 518

5. 연결 리스트 -c. 이중 원형 연결 리스트

이중 원형 연결 리스트 # 이중 원형 연결 리스트는 마지막 노드가 첫번째 노드를 가리키고, 첫번째 노드도 마지막 노드를 가리키게 함으로 원형 구조를 이루게 한 이중 연결 리스트다. # 그러므로 순회시 따로 끝을 지정하지 않는한 무한 루프를 돌게 된다. # 앞에 두개는 처음이나 끝에 도달했는데도 계속 prev나 next를 호출하면 각각 첫 노드나 끝 노드를 계속 반환하도록 했었다. # 앞에 두개에서는 Head포인터와 Tail포인터 두개를 사용했으나 Head포인터 하나로 두 위치를 모두 표시할 수 있다. (Head의 prev가 Tail임으로) # 연결 리스트의 특성상 특정 위치의 노드를 찾기 위해서는 각각의 노드를 거쳐가야 하므로 최악의 경우 size만큼의 노드를 확인해야한다. # 하지만 이중 원형 연결 리..

5. 연결 리스트 -b. 이중 연결 리스트

이중 연결 리스트 # 이중 연결 리스트에서는 이전 노드가 다음 노드의 포인터를, 다음 노드는 이전 노드의 포인터를 가지고 있다. # 그러므로 시작에서만이 아니라 앞에서뿐만 아니라 뒤에서부터도 순회가 가능하다. # 삽입, 삭제 위치에 따른 분류는 이후에 다룰 '스택', '큐', '덱'으로 이루어지므로 이에 자세한 고민은 안했다. # STL에서는 list가 이 구조이다. (즉, 실제로 사용하게 되는건 STL의 ) 단일 연결 리스트의 ADT 1. 원하는 위치에 노드를 추가할 수 있다. 2. 원하는 위치의 노드를 삭제할 수 있다. 3. 원하는 위치의 노드의 값을 수정할 수 있다. 4. 리스트 전체를 양방향으로 순회할 수 있다. 5. 리스트의 전체 노드수를 확인할 수 있다. 6. 리스트가 비어있는 경우는 사용자가..

5. 연결 리스트 -a. 단일 연결 리스트

연결 리스트 # 연결 리스트는 노드가 '데이터'부분과 다음 노드를 가리키는 '링크'부분으로 이루어진 리스트이다. # C/C++에서는 연결 리스트의 링크 부분을 포인터로 구현하며 그렇기에 선형 리스트와는 달리 연속된 메모리 공간을 필요로 하지 않는다는 장점이 있다. # 연결 리스트는 어떻게 연결하느냐에 따라서 '단일 연결 리스트', '이중 연결 리스트', '원형 연결 리스트'등으로 나뉜다. # (Chunked List)라는 것도 있다는 것 같은데 잘 모르겠으므로 생략한다. # 단일 연결 리스트는 이전 노드가 다음 노드를 가리키는 포인터만 가지고 있는 구조이다. 단일 연결 리스트의 ADT 1. 원하는 위치에 노드를 추가할 수 있다. 2. 원하는 위치의 노드를 삭제할 수 있다. 3. 원하는 위치의 노드의 값을..

4. 선형리스트

선형 리스트 # 원소(atom)는 논리적 레코드의 개념으로 그래프 이론에서 사용하는 노드(node)와 동일한 개념이다. # 리스트(List)는 같은 종류의 자료들을 노드 단위로 구성한 집합으로, 항목(item Or field)의 순서 집합으로 볼 수 있다. # 리스트에는 '선형 리스트'와 '연결 리스트'의 두가지가 있다. # 선형 리스트(Linear list)는 다른 말로 연접 리스트(Dense list) 또는 순서 리스트(Ordered list)라고 하며, 노드를 연속되는 기억 장소에 저장한 리스트다. # 선형 리스트는 각각의 노드의 위치를 색인(index) 번호를 사용하여 표시하므로 포인터가 필요 없다. # 이는 배열을 이용해서 구현하기 때문에 STL의 Vector와 비슷하다. # STL에서는 Lis..

3. 추상 자료형(ADT: Abstract Data Type)

추상 자료형 # 추상 자료형은 '사용자 관점'과 '구현자 관점'에서 생각할 수 있다. # '사용자 관점'에서의 추상 자료형은 '구체적인 기능의 완성과정은 언급하지 않고, 순수하게 어떤 기능이 있는지만 나열한 것'이다. # '구현자 관점'에서의 추상 자료형은 '작업을 수행하기 위한 구체적인 방법과 그 방법을 적용하기 위한 데이터 집합'을 의미한다. # 사용자 관점에서 추상 자료형을 설계할 때는 '일반적인 경우의 작업만 설계한다'는 '일반성(Generality)'의 원칙을 지켜서, '범용성(General Usability)'을 높여야 한다. # 구현자 관점에서 추상 자료형을 구현할 때는 기능이 사용자가 생각한대로 작동할 수 있도록 하는데에 초점을 맞추면 된다. # 이 때, 사용자는 구현자가 내부적으로 어떤식..

2. 배열

1. 배열 # 배열은 크기와 성격이 같은 자료형을 연속된 기억장소에 저장한 것이다. # 배열 구조는 선형 리스트(linear list) 또는 순서 리스트(ordered list)를 표현하는 가장 일반적인 형태이다. # 일반적으로 배열은 배열명(Array name)으로 식별되고, 배열의 요소(원소)는 배열명에 괄호를 붙여 그 안의 첨자(subscript Or index)로 식별한다. # 1차원 배열 (One-dimensional Array Or vector) A는 A(L:U)로 표시할 수 있다. # 이 때, L은 배열 첨자의 하한 값으로 배열의 시작 값을 의미하고, U는 상한 값으로 배열의 마지막 값을 의미한다. # 1차원 배열의 길이는 배열을 구성하는 배열 원소의 개수로 A(L:U)의 길이는 U-L+1이..

1. 자료구조 입문

1. 자료와 자료구조 # 자료(data)는 현실 세계로부터 단순한 관찰이나 측정을 통해서 수집한 사실(fact)들 또는 값(value)들이다. # 자료는 가공되지 않은 상태를 의미하고, 정보(infomation)는 어떤 기준에 의해 정리되고 기록된 것을 의미한다. # 자료구조(data structure)는 자료 개체(data object)의 집합, 자료 값 사이의 관계 그리고 자료에 적용 가능한 함수 또는 연산 등을 의미한다. # 프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다. # 데이터의 표현은 데이터의 저장을 포함하고, 데어터의 저장을 담당하는 것이 자료구조이다. 2. 자료의 구성 (각각에 대한 설명은 생략) 비트(bit), 바이트(byte), 단어(word), 항목(item..

C문법 핵심 요약 (기본적인 용어)

기본적인 용어 변수/상수변수 : 특정한 자료형의 데이터를 담아놓은 메모리 공간 및 그 공간의 데이터를 사용할 수 있게 지정한 이름. 조금 쉽게 표현하면 언제든 값을 변경할 수 있는 상자. 상수 : 특정한 자료형의 데이터 그 자체. 혹은 그러한 값으로 정의해놓은 매크로. 예를 들면 '1'(정수형 상수), '0.5'(실수형 상수), 'a' (문자형 상수) 등 제어문 : 절차적 흐름을 제어할 수 있는 언어적 문법.조건문 : 특정 조건에 따라 실행되거나 실행되지 않도록 하는 문법. 반복문 : 특정 조건을 만족하는 동안 지정한 문장들이 반복 실행되게 하는 문법. 연산자 : 데이터에 작용해 새로운 값을 만들어내는 일종의 함수. 함수 : 특정한 명령들을 수행하도록 묶어놓은 것. 매개변수 : 필요에 따라 함수에 전달하..

1. 문자열 출력하기

이전 내용은 lib로 연결함.(lib생성과 연결은 이후에 추가예정) headerText.h #pragma once #include "libHeader.h" #include //1. 출력 영역 얻어오기 // - 윈도우에 텍스트를 출력하거나 그림을 그리려면 먼저 커널에서 출력 영역을 얻어와야 한다. // - 윈도우의 출력 영역은 좌측 상단 모서리를 원점으로 하는 화면 좌표계를 사용한다. // - 출력을 위해서 얻어온 화면 영역을 디바이스 컨텍스트(Device Context : DC)라 한다. // - 얻어온 DC는 HDC 타입의 변수에 저장해서 사용한다. // - HDC 타입은 메모리 영역을 관리하며, 메모리 영역에는 얻어온 화면 영역에 대한 속성값을 저장할 수 있다. // - DC를 얻어오는 함수/ 해제하..

반응형