ComputerScience/DataStructure (4) 썸네일형 리스트형 Queue 큐의 정의 FIFO : Fisrt in First Out 즉, 먼저 들어온 애가 먼저 나간다 큐의 기본연산 enqueue : 큐에 넣는다 dequeue : 큐에서 뺀다 큐의 ADT 1. Init 2. Queue is Empty 3. Queue에 Push 4. Queue에서 Pop 큐의 구현 큐는 1. 배열 2. 연결리스트 형태로 구현할 수 있다. 배열기반 큐 1. 일반 배열 형태의 큐 큐에 A,B,C라는 원소가 들어있다고 하자. 이 때 Pop을 한 번 하면 큐의 Head가 앞으로 이동하는데, Head가 이동한 공간만큼은 메모리를 못쓰게 되므로 비효율적이다. 2. 원형큐 앞서 언급한 메모리 문제를 해결하기 위해 원형큐를 사용한다. 하지만 이 때도 문제가 발생하는데, Queue가 꽉 찼을 때와 , Queue.. [Stack] 계산기구현 중위표기법 : 수식 내에 연산의 순서에 대한 정보가 없음. 따라서 소괄호와 연산자의 우선순위를 정하여 이를 기반으로 연산 순서 명시 후위표기법이 컴퓨터 입장에서 처리하기 더 쉽다. 따라서 중위표기법을 후위 표기법으로 바꾸는 예제를 생각해보자. 이 때 몇가지 규칙들을 알아보자, 피연산자는 바로 출력한다. 연산자의 우선순위는곱하기,나누기 > 덧셈, 뺄셈 > '(' 이다. 연산자는 스택에 넣는다. 스택의 마지막 원소가 현재 push 하려는 원소보다 우선순위가 높거나 낮다면 Pop한다 ')' 를 만났을 경우 스택에서 '(' 를 Pop 할 때까지 계속 Pop한다. 다음은 C언어로 윤성우 님의 열혈 자료구조를 참고해서 만든 계산기 코드이다. #include #include "Stack.h" #include #inc.. [자바스크립트] 연결리스트 구현한 연결리스트의 ADT 1. 삽입 2. 삭제 3. 존재유무 시간복잡도 - 정렬하지 않는 경우 삽입 : O(1) , 삭제 : O(N), 조회 : O(N) - 정렬하는 경우 삽입 : O(N), 삭제 : O(1), 조회 : O(N) function Node(data) { this.data =data; this.next = null; } function LinkedList() { this._length = 0; this._head = new Node('dummy'); this._tail = this._head; this._before = null; this._cur = null; } LinkedList.prototype.append = function(data) { var node =new Node(data.. 하노이 타워 1. 재귀함수적 사고 2. 탈출 조건 고려 #include #include char arr_start[5] = { '1', '2', '3' }; char arr_temp[5] = { '\0' }; //배열 0으로 초기화 char arr_end[5] = { '\0' }; int n = 3; void move(char arr1[], char arr2[]) { for (int i = n; i >0; i--) { arr2[i] = arr2[i - 1]; } arr2[0] = arr1[0]; for (int i = 0; i < n; i++) { arr1[i] = arr1[i + 1]; } } void visualize() { for (int i = 0; i < n; i++) { printf(" %c %c %c\n.. 이전 1 다음