본문 바로가기

전체 글75

[자료구조] 큐 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 큐(Que) 큐는 기본적으로 선입선출(First In First Out)을 따른다. 큐라는 배열에 Enque()를 통해 데이터를 입력하고 Deque()를 통해 먼저 들어온 값부터 출력하는 구조이다. Enque rear가 가리키는 위치에 데이터를 입력한다. rear를 1증가시킨다. 만일 rear가 큐의 max보다 크면 0으로 초기화한다. Deque front가 가리키는 위치의 데이터를 출력한다. front를 1증가시킨다. 만일 front가 큐의 max보다 크면 0으로 초기화한다. 소스코드 #define __main #ifdef _.. 2020. 11. 1.
[자료구조] 스택 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 스택(Stack) 스택은 기본적으로 후입선출(Last In First Out)을 따른다. 스택이라는 배열에 Push()를 통해 차곡차곡 쌓아올리고 Pop()을 통해 가장 늦게 들어온 값부터 출력하는 구조이다. Push() 배열에서 ptr위치에 값을 넣는다. ptr을 1증가시킨다. Pop() ptr를 1감소시킨다. 배열에서 ptr위치의 값을 출력한다. 소스 코드 #define __main #ifdef __main #include typedef struct __Stack{ int* stk; // 스택 int max; // 스택의 최.. 2020. 10. 30.
[자료구조] 이진 트리 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 이진트리(Binary Tree) 이전에 배웠던 연결 리스트는 각 노드에 Data와 다음 노드를 가리키는 포인터변수가 있었다. 하지만 이진트리는 각 노드에 Data와 왼쪽, 오른쪽 노드를 가리키는 포인터변수가 있는 구조로 되어있다. 또한 같은 깊이에 있는 노드들을 Level이라고 한다. 이진트리 삽입 첫 노드는 그냥 입력한다. 첫 노드(Root)를 시작으로 각 노드와 비교하여 작으면 왼쪽, 크면 오른쪽 노드로 간다. 노드가 NULL이면 입력한다. NULL이 아니면 "2번"으로 간다. 2번과 3번을 반복한다. 이진트리 삭제 자식 노.. 2020. 10. 29.
[자료구조] 연결 리스트 자료구조 연결 리스트 이진 트리 스택 큐 해시 정렬 버블 정렬 선택 정렬 삽입 정렬 퀵 정렬 힙 정렬 알고리즘 재귀 함수 너비 우선탐색(BFS) 깊이 우선탐색(DFS) 다익스트라 연결 리스트(Linked List) 연결 리스트는 기차를 생각하면 이해하기 쉽다. 각 열차(Node)에 사람들(Data)가 있고 이 열차를 1줄로 계속 연결하면 된다. 그리고 각 열차는 다음 열차의 위치를 저장한다. 하지만 저는 최상위/최하위 노드와 총 노드의 개수를 저장하는 구조체를 사용하여 좀더 쉽게 연결 리스트를 사용하고자 합니다. 새로운 노드 추가 노드가 없는 경우 새로운 노드를 만들고 리스트의 head에 새로운 노드의 주소를 저장한다. Number를 1증가시킨다. 노드가 한개만 있는 경우 다시 새로운 노드를 만들고 리스.. 2020. 10. 27.