본문 바로가기

c & c++/자료구조6

iterator 연산자 함수 구현 iterator 클래스를 통해서 연산자 오버로딩 *(역참조), ++, ==, != 구현해보기 *(역참조) 증가 연산자 ++ (전위) 실행하면 바로 증가하는것을 알 수 있다. 증가 연산사 ++ (후위) 비교연산자 == , != 2022. 8. 23.
vector(가변배열) iterator(반복자) 구현 class cArr 안의 iterator(inner class) 각각 별개 자료형 iterator begin 함수 생성자 오버로딩을 이용해서 축약해서 표현 할 수 있다. main함수 에서 begin 함수 실행 2022. 8. 16.
반복자(Iterator) C++ 반복자(Iterator) 자료구조 내에 데이터를 추가했을때(컨테이너 내에 데이터를 넣었을때) iterator 반복자를 이용해서 내부에 있는 데이터에 접근하고 순회할수 있게 하는 클래스 C++ 라이브러리는 반복자를 제공하는데 이것을 사용하면 라이브러리의 방식대로 자료구조를 액세스 할 수 있다. 따라서 라이브러리가 효과적으로 동작한다는 것을 보장 할 수 있다는 장점이 있다. 즉, 포인터와 상당히 비슷하며, 컨테이너에 저장되어 있는 원소들을 참조할 때 사용한다. 추상적으로 말하자면, 반복자란 컨테이너에 저장되어 있는 모든 원소들을 전체적으로 훑어 나갈 때 사용하는, 일종의 포인터와 비슷한 객체라고 할 수 있다. 알고리즘 마다 각기 다른 방식으로 컨테이너를 훑어가기 때문에, 반복자에도 여러가지 종류가 있.. 2022. 8. 16.
연결형 리스트 구현 1. 연결형 리스트(Linked List) 란? 하나의 개체를 이루는 노드가 연결되어 리스트를 이루는 "자료구조" 를 말한다. 노드에는 값을 담고 있는 '데이터'와 다음 노드를 가리키는 '링크' 정보를 저장하고 있는 것이 기본이다. '데이터'에는 숫자, 문자열, 또다른 연결리스트 등 다양한 형식을 가질 수 있다. 일반적으로 리스트의 맨 앞 노드를 헤드(Head), 맨 마지막 노드를 테일(Tail)이라고 한다. 2. 배열과의 차이점 배열과 연결리스트는 언뜻 비슷해 보이나, 차이점은 분명히 있다. 배열은 메모리의 연속한 위치에 저장되고, 연결 리스트는 각 노드가 임의의 위치에 저장된다. 또한 배열은 특정 원소를 지칭하는 것이 인덱스를 활용하는 등으로 간편하나(O(1)), 연결 리스트는 선형 탐색을 하듯 한 .. 2022. 8. 12.
연결형 리스트(Linked List) LinkedList.h LinkedList.cpp #include "LinkedList.h" #include //연결형 리스트 초기화 함수 구현 void initList(stLinkedList* pList) { pList->pHeadNode = nullptr; pList->count = 0; } //연결형 리스트 데이터 추가 함수 구현 void PushBack(stLinkedList* pList, int intData) { //stNode 포인터 pNode 동적 할당 stNode* pNode = (stNode*)malloc(sizeof(stNode)); //pNode의 멤버 iData값은 매개변수 intData; pNode->iData = intData; //PushBack이기 때문에 pNode 의 다음.. 2022. 8. 7.
가변 배열 가변배열을 하기 위해서는 동적할당을 이용해야한다. main.cpp Arr.h 파일 Arr.cpp 2022. 8. 1.