
그래프 그래프는 객체 사이의 연결 관계를 표현할 수 있는 자료구조다. 📈 정의 그래프는 정점과 간선들의 유한 집합으로 G = (V, E)로 표시할 수 있다. 여기서 정점은 노드라고도 불리고, 간선은 링크라고도 불린다. 여러 그래프가 존재하지만 오늘은 인접 행렬 C++ 구현에 대해 집중적으로 다뤄보려고 한다. 구현 (C++) getVertex(int i) getEdge(int i, int j) setEdge(int i, int j, int val) insertVertex(char name) void insertEdge(int u, int v) void display() isEmpty() isFull() 클래스 생성 class AdjMatGraph { private: int size; // 정점의 개수 ch..

트리 트리는 한 개 이상의 노드로 이루어진, 나무를 거꾸로 엎어놓은 듯한 모양의 비선형 자료구조다. 🎄 트리의 종류 트리의 종류는 여러 가지가 있을 수 있다. 그중에서 가장 일반적인 트리로 일반 트리와 이진트리가 있다. 🎆 일반 트리 일반 트리는 위 사진과 같이 생겼다. 일반 트리에서 노드는 0개부터 최대 N개의 노드를 가질 수 있다. (N은 제한이 없다) 🎆 이진트리 이진트리는 위 사진과 같이 생겼다. 이진트리에서 이진은 0과 1을 나타내고, 부모 노드가 자식 노드를 최대 2개까지만 가질 수 있다. 구현 (C++) insert() search() print() 클래스 생성 class BSTNode { public: int Key; BSTNode *Left; BSTNode *Right; BSTNode *..

해시 해싱 (hashing) 해시 함수 (hash function) 해시 테이블 (hash table) 구현 (C++) 🧐 해싱 (hashing) 해싱은 유사한 개체 그룹에서 특정 개체를 고유하게 식별하는 데 사용되는 기술로, 키(key)에 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항복에 접근한다. 위 그림은 키(key)를 이용하여 해시 함수를 통해 항목에 접근하는 과정을 나타낸 것이다. 위와 같은 탐색 과정을 해싱(hashing)이라고 한다. 🧐 해시 함수 (hash function) 해시 함수는 임의의 데이터를 고정된 길이로 매핑하는 함수를 말한다. 데이터에 해싱 작업이 적용되면 원래 데이터를 다시 가져올 수 없으므로 단방향 프로세스라고도 한다. 또한 모든 해시 출력은 ..

큐 큐는 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제되는 구조로 선입선출 특성을 가진다. 구조상으로 큐가 스택과 다른 점이 있다. 스택의 경우, 삽입과 삭제가 같은 쪽에서만 일어난다. 그렇지만 큐에서는 삽입과 삭제가 다른 쪽에서 일어난다. ✅ 큐에서 삽입이 일어나는 곳을 후단(rear)이라 하고 삭제가 일어나는 곳을 전단(front)이라고 한다. 📌 큐 연산 enQueue(int value) : 큐 후단(rear)에 값을 추가 deQueue() : 큐 전단(front)의 값을 제거 isFull() : 큐가 가득 찼는지 확인 isEmpty() : 큐가 비어있는지 확인 displayQueue() : 큐에 있는 요소들 출력 클래스 생성 #define MAX_SIZE 5 class Queue {..

스택 스택은 컴퓨터에서 믿을 수 없을 정도로 많이 사용되는 자료구조이다. 후입선출(LIFO : Last In First Out) 형태로 나중에 들어온 것이 가장 먼저 나가는 형태를 띈다. 직역 그대로 데이터를 순서대로 쌓는 자료구조라고 생각하면 된다. 스택에서의 입출력은 맨 위에서만 일어나고 스택의 중간에서는 데이터를 삭제할 수 없다. 📌 스택 상단 : 스택에서 입출력이 이루어지는 부분 스택 하단 : 반대쪽인 바닥 부분 요소 : 스택에 저장되는 것 공백 스택 : 스택에 요소가 하나도 없을 때 스택의 연산 push() : 스택 맨 위에 item을 추가 pop() : 스택의 맨 위에 원소를 제거해서 반환 peek() : 스택의 맨 위의 요소를 제거하지 않고 반환 isFull() : 스택이 꽉 찼는지 확인 i..

연결 리스트 연결 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. 연결 리스트 구조 연결 리스트는 노드들의 집합이다. 노드는 데이터 필드와 링크 필드로 구성되어 있다. 📊 데이터 필드 데이터 필드에는 저장하고 싶은 데이터가 들어간다. 위 그림에서 하얀색 배경인 부분이 데이터 필드이다. 📎 링크 필드 링크 필드에는 다른 노드를 가리키는 포인터가 저장된다. 위 그림에서는 노란색 배경인 부분이 링크 필드이다. 연결 리스트에서는 연결 리스트의 첫 번째 노드를 알아야 만이 전체 노드에 접근할 수 있다. 따라서 연결 리스트마다 첫 번째 노드를 가리키고 있는 변수가 필요한데 이것을 헤드 포인터라 한다. 그리고 마지막 노드의 링크 필드는 NULL로 설정되는..
- Total
- Today
- Yesterday
- 연습문제
- 쉽게 배우는 자바 프로그래밍
- JS
- 정리
- 정렬
- 운영체제
- 정답
- Python
- CPP
- java
- 파이썬
- C++
- 문자열
- 답
- 그리디
- 해답
- OS
- BFS
- 백준
- 자바스크립트
- 우종정
- 알고리즘
- 쉽게배우는자바프로그래밍
- 구현
- 쉽게배우는
- py
- Web
- 풀이
- 자바
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |