자료구조 5

[C++] 이진 탐색 트리 구현하기 (Binary Search Tree)

이진 탐색 트리 (Binary Search Tree)이진 탐색트리는 데이터의 크기에 따라 노드의 위치가 다르다.정의는 아래와 같다. (1) 모든 원소는 서로 다른 유일한 키를 갖는다.(2) 왼쪽 서브 트리에 있는 원소의 키는 그 루트의 키보다 작다.(3) 오른쪽 서브 트리에 있는 원소의 키는 그 루트의 키보다 크다.(4) 왼쪽 서브트리와 오른쪽 서브트리도 이진 탐색 트리이다. 이진 탐색 트리 C++ 구현이제 이진 탐색트리를 구현할텐데,- 탐색(search)- 삽입(insert)두 가지 기능을 수행하도록 할 것이다.구현해볼 이진 탐색트리는 아래와 같이 생겼다. 주황색 표시된 부분은 새로 추가해볼 노드다.1234567891011121314151617181920212223242526272829303132333..

자료구조 : 큐(Queue) 이해하고, 구현하기 in C++

Queue 1분만에 파악하기! 큐(Queue)은 선입선출 (First In First Out, FIFO) 자료구조이다. 먼저 넣은 자료가 가장 마지막에 나오는 스택(Stack)과는 반대이다. >> 스택에 대한 포스트를 참조 큐에 자료를 넣는 행동은 Put(또는 Enqueue), 꺼내는 행동은 Get(또는 Dequeue)이라고 하며 큐의 제일 앞에 있는 자료를 Front(또는 Head), 가장 뒤의 자료를 Rear(또는 Tail)라고 한다. 또한 큐가 꽉 차서 더 이상 큐에 자료를 넣을 수 없는 경우를 Overflow라고 하고, 큐가 비어있어 자료를 더이상 Get(Dequeue)할 수 없는 경우를 Underflow라고 한다. Queue, 어디에 쓸까? 'Queue'는 줄, 대기행렬이라는 뜻을 가지고 있다...

자료구조 : 스택(Stack) 이해하고, 구현하기! C++

Stack 1분만에 이해하기 스택(Stack)은 후입선출 (Last In First Out, LIFO) 자료구조이다.즉, 제일 늦게 들어온 데이터가 제일 빨리 나간다는 것이다.스택에 데이터를 넣는 행동은 Push(밀어 넣는다), 꺼내는 행동은 Pop이라고 부른다.그리고 스택의 가장 위 데이터를 가리키는 포인터를 top 이라고 하겠다. Stack은 어디에 사용되고 있을까?자료구조를 배우면서 나는 항상 "왜 이걸 만들까..."라는 생각이 제일 먼저 들었다.배울때 스택이 유용하고 널리 쓰인다는 걸 알 수 있다면 좋겠다고 생각해서 이 섹션을 덧붙였다! 워드 프로세서를 이용하다가 되돌리기 버튼을 누르면 이전에 했던 명령이 취소된다.이것은 워드 프로세서가 프로그램의 스택에 명령을 하나 하나 추가하다가,사용자가 되돌..

마인크래프트 앱 개발기 9편, 자료구조를 배우다!

이번 학기, 나는 자료구조라는 수업을 듣고 있다.자료구조와 알고리즘 정도는 알고 있어야 프로그래머라고 생각했기 때문에 가장 신경쓰며 듣는 중이다.단순 성적 따기가 아닌, 수업 내용 하나 하나를 흡수하는데 집중하고 있다는 말이다.자료구조 책 초반에 Big O 계산법이 나오는데, 저번에 알고리즘 독학하며 그냥 넘겼던 부분이 알고리즘의 시간복잡도를 따지는 데 중요하단 것을 깨달았다.그리고 중첩 for 문이 상당히 효율이 떨어지는 방법이라는 것도 말이다. 말로만 들었지, 시간복잡도를 따지니 자료가 많아질 수록 중첩 for문의 성능은 기하급수적으로 떨어졌다. 마인크래프트 앱에서 가장 많이 사용하는 기능이 아이템 리스트 펼치긴데, 나는 그 기능을 중첩 for 문으로 구현 해 놓았다.수업을 듣고 여러 실습들을 하면서..

Polynomial Operation in C++, 다항식 연산 덧셈/뺄셈/곱셈

자료구조 수업을 들으면서 과제로 다항식 연산을 C++코드로 구현하라는 것이 나왔다.C++ 자체가 처음이라 C++부터 공부를 했는데, 다행히도 내가 배운 C와 Java가 섞여있는 언어라배우는데 그다지 오래 걸리지는 않았다. 다항식 연산에서 termArray를 static으로 쓰는 것이 포인트고,매커니즘은 내가 그린 그림과 같다...(이렇게 그림 그려서 코드 작성하니 훨씬 쉬워지는 듯) 곱셈의 경우 추가적인 옵션 과제였는데,나는 한번 곱셈해서 나온 다항식을 계속해서 더하는 방식으로곱셈을 구현했다. 코드가 조금 길긴하지만 아래에 붙여넣도록 하겠다.(다항식 곱셈에 관해서 조금더 효율적이 있는 방법이 있으신 분은 댓글로 같이 공유해봐요!) 12345678910111213141516171819202122232425..