분류 전체보기 130

함수(function)

함수란? 함수?? F(x)?? 수학에서 함수란 입력값이 있고 입력값에 따라 내부적인 연산을 하여 그 결과를 출력한다??라고 알고 있음 그렇다면 프로그래밍에서 함수란 무엇일까?? 수학적인 개념과 비슷하다. 수학에서 함수에 입력값과 내부 연산이 있고 출력값이 있듯이 프로그래밍에서는 1)입력값이 있을 수도 있고, 2)내부 연산이 있을 수도 있고, 3)출력값이 있을 수도 있다. "있을 수도 있다"라는 말은 "없을 수도 있다"는 뜻이다 극단적으로 얘기로 하자면 입력값도 없고 내부 연산도 없고 출력이 없어도 프로그래밍에서는 함수라고 할 수 있다는 것이다. 함수의 활용 극단적인 예이지만 위에서 입력값도 없고 내부 연산도 없고 출력도 없어도 함수라고 하였다. 입력도 없고 내부 연산도 없고 출력도 없는 함수는 아무 일도..

5장 정렬

계모가 3만명의 학생 정보를 주며 17,213등이 누구냐고 알아보라고 함, 텍스트 에디터와 C컴파일러 쓸 수 있게 해줌, 동점자는 없다고함(착하다...) 오늘 못 알아오면 맴매 맞는다고함(못됐다...) 콩쥐의 해결책: 정렬 알고리즘 정렬의 목적 : 찾으려고 하는 것을 쉽게 찾고자 하는데 있음(탐색을 쉽게 하려고) 버블 정렬 버블 정렬을 소개합니다 버블 정렬은 알고리즘이 데이터를 정렬하는 과정이 마치 물 속 깊으느 곳에서 일어난 거품이 수면을 향해 올라오는 모습과 같다고 해서 붙여진 이름 버블 정렬(Bubble Sort)은 데이터 집합을 순회하면서 집합 내의 이웃 요소들끼리의 교환을 통해 정렬을 수행 6뽀글뽀글 위로 올라오고 뒤로 가면서 완료됨, 6을 제외하고 나머지에 대해 위의 내용을 반복 버블 정렬은 ..

4장 트리

트리기초 다지기 트리를 소개합니다 트리(Tree)는 이름에서 알 수 있는 것처럼, 나무를 닮은 자료구조이다 컴퓨터 과학에서도 트리는 굉장히 활용도가 높다. 운영체제의 파일 시스템이 트리 구조로 이루어져 있고, HTML이나 XML 문서를 다룰 때 사용하는 DOM(Document Object Model)도 트리 구조로 이루어져 있다. 검색 엔진이나 데이터 베이스도 트리 자료구조에 기반해서 구현된다. 트리를 열어봅시다 트리는 뿌리(Root), 가지(Branch), 잎(Leaf) 세 가지 요소로 이루어짐 뿌리, 가지 잎 모두 실제로는 노드이다. 이들은 트리 내의 위치에 따라 명칭만 달라짐. 루트는 트리의 가장 위에 있는 노드를 가리키고, 가지는 루트와 잎 사이에 있는 모든 노드를 일컫는 말이다. 잎 노드는 끝에..

3장 큐

큐 먼저 들어간 데이터가 먼저 나옴, FIFO(First In First Out), 선입선출(先入先出) 큐의 주요 기능: 삽입과 제거 큐의 가장 앞 요소를 전단(Front), 마지막 요소를 후단(Rear)라고 부름 큐는 삽입(Enqueue)은 후단, 제거(Dequeue)는 전단에서 수행 끝은 새로운 시작이다: 순환 큐 순환 큐를 소개합니다. 위의 그림과 같은 방법으로 큐를 만든다면 제거(Dequeue)가 될 때마다 나머지 요소를 앞으로 이동해야하는 비용이 필요하다 그래서 전단을 가리키는 변수를 도입하여 배열의 요소를 변경하는 대신 변경된 전단의 위치만 관리할 수 있다. 요소들의 이동에 대한 부하는 해결할 수 있지만 요소를 제거하고나서 전단의 앞의 요소를 사용하지 못하여 용량이 줄어드는 문제가 생긴다 그래..

2장 스택

스택 주차장의 추억 '가장 먼저 들어간 데이터가 가장 마지막에 나오는 구조' 스택은 뭔가를 쌓아놓은 '더미'를 뜻함 LIFO(Last In, First Out) 요소의 삽입과 삭제가 자료구조의 한쪽 끝에서만 이루어지는 것이 특징 스택의 주요 기능 : 삽입과 제거 스택의 주요 기능은 '삽입(push)'와 '제거(pop)' 배열로 구현하는 스택 스택과 스택의 노드 표현하기 노드 typedef int ElementType; typedef struct tagNode { ElementType data; } NODE; 스택 구조체 typedef struct tagArrayStack { int capacity; // 용량 int top; // 최상위 노드의 위치 NODE* node; // 노드 배열 } ArraySt..

1장 리스트

링크드 리스트 배열 유감 배열처럼 데이터 집합을 보관하는 기능을 가지면서도 한편으로는 배열과는 달리 유연하게 크기를 바꿀 수 있는 자료구조 리스트는 스택과 큐, 그리고 트리와 같은 자료구조를 이해할 수 있는 기반이 된다는 점에서 중요 링크드 리스트를 소개합니다 링크드 리스트 : 노드를 연결해서 만드는 리스트 노드 : 데이터를 보관하는 필드 + 다음 연결 고리 역할을 하는 포인터 로 구성됨 헤드(머리)와 테일(꼬리)을 가지고 있음 데이터가 늘어날 때마다 테일에 붙이면 됨 C 언어로 표현하는 링크드 리스트의 노드 typedef struct Node { int Data; // 데이터 필드 struct Node* NextNode ; // 다음 노드를 가리키는 포인터 } NODE ; 링크드 리스트의 주요 연산 노..

목차

part1. 자료구조 1장. 리스트 링크드 리스트 배열 유감 링크드 리스트를 소개합니다 C 언어로 표현하는 링크드 리스트의 노드 링크드 리스트의 주요 연산 링크드 리스트 예제 프로그램 링크드 리스트의 뒷이야기 더블 링크드 리스트 더블 링크드 리스트를 소개합니다 더블 링크드 리스트의 주요 연산 더블 링크드 리스트 예제 프로그램 환형 링크드 리스트 리스트 세계와 우로보로스, 환형 링크드 리스트 환형 더블 링크드 리스트의 주요 연산 환형 더블 리읔드 리스트 예제 프로그램 2장. 스택 스택 주차장의 추억 스택의 주요 기능 : 삽입과 제거 배열로 구현하는 스택 스택과 스택의 노드 표현하기 스택의 기본 연산 구현하기 배열로 구현하는 스택 예제 프로그램 링크드 리스트로 구현하는 스택 스택과 스택의 노드 표현하기 스택..

42장 STL 알고리즘

42.1 읽기 알고리즘 42.1.1 find 원하는 정보를 구하기만 하는 알고리즘 find 함수 원형 Init find( Init first, Init last, const T& val ) ; 입력 반복자 두 개로 검색 대상 구간을 지정, 검색하고자하는 값을 세번째 인수로 전달 값이 있으면 그 반복자 리턴, 없으면 last 리턴 예제 find #include #include #include #include using namespace std ; void main ( void ) { string name[] = { "김정수", "구홍녀", "문병대", "김영주", "임재임", "박미영", "박윤자" } ; vector as( &name[0], &name[7] ) ; vector::iterator it ; ..

41장 연관 컨테이너

41.1 셋 41.1.1 pair 연관 컨테이너(Associative Container)는 키와 값처럼 관련이 있는 데이터를 하나의 쌍으로 저장하는 컨테이너 연관 컨테이너 분류 저장 대상 키 키 + 값 중복 불허 셋 맵 중복 허용 멀티셋 멀티맵 연관 컨테이너의 반복자는 모두 양방향 반복자이다. 자료들이 항상 정렬된 상태를 유지하므로 다시 정렬할 필요가 없으며 검색이 워낙 빠르기 대문에 이분 검색을 할 필요도 없다. 언제든지 순서대로 순회하면 정렬된 결과를 얻을 수 있고 검색은 원래부터 초고속이므로 굳이 임의 접근 반복자가 필요하지도 않다. 연관 컨테이너들은 키와 값의 쌍을 표현하기 위해 pair구조체를 사용 pair 구조체 연관 컨테이너들이 키와 값의 쌍을 표현하기 위해 사용하는 일종의 유틸리티 클래스,..

40장 시퀀스 컨테이너

40.1 벡터 40.1.1 벡터 벡터는 동일 타입의 자료 집합인 시퀀스 컨테이너 대표이다. 템플릿 기반이므로 임의 타입을 요소로 가질 수 있으며 요소의 개수에 따라 자동으로 메모리를 관리한다. 임의 타입의 동적 배열 벡터의 내구적인 구성 원리는 C의 정적 배열과 거의 유사, 특성과 장단점도 배열과 동일 요소들의 크기가 똑같고 인접한 위치에 이웃하여 배치되어, 메모리를 적게 차지하며 임의 위치를 빠른 속도로 액세스 가능 삽입, 삭제 속도가 느리다 벡터의 선언문 template class vector Type은 벡터에 저장되는 요소의 타입이며 벡터는 이 타입의 집합을 관리 Allocator는 내부적인 메모리관리에 사용되는 할당기인데 디폴트가 제공되므로 생략 가능 컨테이너 조작을 위해 사용되는 타입 타입 설명..