반응형 Data Structure36 C++ Stack 만들기 (version.4 - Operator overloading이란?) ArrayList로 구현한 스택을 통해 Operator overloading 및 몇 가지 문법을 정리해볼 것이다. C++에서는 자바의 출력문 System.out.println() 혹은 C의 printf()와 달리 ostream의 ' 2023. 3. 20. C++ Stack 만들기 (version.3.3 - LinkedList Stack) Stack 만들기 version 3.3 C++ LinkedList로 Stack 만들기 version 3.2에 Information hiding 요소를 보완하여 만들어 보겠다. https://suldenlion.tistory.com/83 Information hiding을 잘 할줄 아는가 못하는가에 따라 코드 작성한 사람이 객체지향 기법을 잘 다룰줄 아는지 모르는지를 바로 알 수 있을 정도로 중요하다고 한다. LinkedList로 Stack을 만들어 오고 있는데, 이전 버전까지는 Stack 객체 따로, Node 객체 따로 정의해서 사용하였다. 프로그래머 입장에서는 Stack과 Node를 모두 사용하면서 코딩을 하기 때문에 문제없지만, 어떠한 사용자가 이 프로그램을 사용한다고 할 때, 사용자 입장에서는 St.. 2023. 3. 19. C++ Stack 만들기 (version.3.2 - LinkedList Stack) Stack 만들기 version 3.2 LinkedList로 만든 Stack version 3.1에 Garbage collector와 Destructor, preprocessor directives 등의 기능을 보완하여 만들어 보겠다 Stack 구현 로직은 3.1 버전과 같다. https://suldenlion.tistory.com/82 바로 메인 함수를 보도록 하겠다. #include #include "Stack.h" void main() { Stack a; a.push(10); a.push(20); a.push(30); int x = a.pop(); a.push(40); printf("%d\n", x); printf("%d\n", a.pop()); /*Stack *a; a = new Stack(); .. 2023. 3. 18. C++ Queue 만들기 (version.4 - LinkedList Queue) C++로 Queue 구현하기 version 4 LinkedList로 큐를 만들어 보겠다. LinkedList로 Queue를 구현하기 위해서는 큐 객체에 맨 앞번째 노드를 가리키는 front라는 이름의 포인터 노드, 맨 뒤 노드를 가리킬 rear, 그리고 총 노드의 개수를 저장할 size 변수로 구성시켜야 할 것이다. 대강 이런 느낌의 큐를 만들어서 노드를 연결시켜가며 사용하면 될 것이다. 값을 enqueue할 때, front와 rear 포인터 노드를 들어오는 노드에 잘 참조하도록 해야하는데 큐가 비어있을 경우와 그렇지 않을 경우에 다르게 작업해야 한다. 큐가 비어있을때 값이 들어온다면 front와 rear가 모두 처음 들어온 노드를 가리키게 해야 한다. 이후에 들어오는 값들은 rear만 다음 노드를 가리.. 2023. 3. 18. C++ Stack 만들기 (version.3.1 - LinkedList Stack) C++로 Stack 만들기 version 3.1 LinkedList 방식으로 작동하는 Stack을 만들어 보겠다. Node끼리의 연결 방식으로 만들어 줌으로써 배열의 문제점인 크기 고정, 삽입 / 삭제의 제약을 해결하고 기억장소를 보다 효율적으로 사용할 수 있다. LinkedList와 ArrayList의 큰 차이점으로는 삽입/삭제시 LinkedList가 ArrayList보다 빠르다는 것과 traverse시에는 ArrayList가 LinkedList보다 빠르다는 점이 있다. 이번 스택은 LinkedList로 단순하게 구현 → Garbage collector 기능 추가 → Information hiding 신경 써서 구현의 세 가지 버전으로 나눠서 만들어 볼 것이다. Node라는 클래스를 만들어 데이터들을 .. 2023. 3. 17. C++ Queue 만들기 (version.3 - Growable Array Queue) Queue 만들기 version 3 Growable Array Queue 이면서 garbage collector 명령어와 destructor를 사용해 보겠다. Growable Array Queue도 Growable Array Stack과 마찬가지로 자료구조가 가득 차게되면 자료구조의 size를 두배 씩 늘려나가며 운용하는 것이다. Queue 자체는 Circular Queue의 방식과 같고 OverFlow가 발생하기 전에 자료구조 크기를 늘려주는 작업이 추가된 것과 같다. 데이터가 들어가지 않은 초기 상태의 큐가 이렇게 있을 때, 데이터를 1부터 증가시키면서 넣어보겠다. 이런 식으로 데이터를 채워나가게 되고 다음으로 4를 enqueue한다고 할 때, (rear+1) % size 의 값이 front와 같아진.. 2023. 3. 16. 이전 1 2 3 4 5 6 다음 반응형