분류 전체보기(394)
-
디폴트 메서드
인터페이스를 구현하는 클래스에서는 메서드를 모두 구현해야 한다. 이때 인터페이스에 새로운 메서드를 추가하려고 하면 문제가 발생-> 해당 인터페이스를 구현하는 모든 클래스에 추가하려는 메서드를 모두 구현해줘야 한다. 이 문제점을 해결하기 위해 있는게 디폴트 메서드이다. 디폴트 메서드를 이용하면 인터페이스의 기본 구현을 그대로 상속하므로 인터페이스에 자유롭게 새로운 메서드 추가 가능
2022.12.07 -
Graph
노드와 그 노드를 연결하는 엣지들로 이루어진 비선형 자료구조 undirected graph: 두 노드를 연결하는 엣지의 방향이 없는 그래프 directed graph: 두 노드를 연결하는 엣지의 방향이 있는 그래프 complete graph: 모든 노드들 사이에 1:1로 연결된 엣지를 갖는 그래프 subgraph: 원래의 그래프에서 일부의 노드나 엣지를 제외하여 만든 그래프 weigth graph: 노드를 연결하는 엣지에 가중치를 할당한 그래프 loop: 엣지가 자기 자신에게 연결되어 있을 때 Path: 출발 노드에서 시작에서 도착 노드에 도착할 때까지의 경로 경로의 길이: 엣지의 가중치가 없는 그래프의 경우- 지나온 엣지의 수 있는 그래프의 경우- 지나온 엣지들의 가중치의 합 simple path: 모..
2022.12.06 -
스택과 큐
1. 스택(stack) 가장 마지막으로 삽입된 원소가 가장 먼저 제거되는 LIFO(Last In Frist OUT) 형태 한 쪽에서만 자료를 삽입하고 삭제할 수 있는 선형 구조 헤더파일에 존재 *스택에 벡터 넣고 싶다면? vector myvector(2,100); //100 100 저장하는 int형 벡터 생성 stack mystack(myvector); //stack에 벡터 넣어서 생성 stack mystack2(myvector); -멤버 함수 const_reference &top() const; //스택의 가장 상단에 있는 원소 반환 emplace(); //스택의 탑에 입력받은 원소 추가 *push()와 차이점? push()는 함수에 전달된 값이나 매개변수의 복사본을 삽입하는 반면 emplace()는 ..
2022.12.06 -
연결 리스트
장점: 리스트의 중간 지점에서도 자료의 추가와 삭제하는 속도가 빠름 단점: 특정 위치의 데이터를 검색하는 데에, 배열에 비해서 시간이 더 소요됨 이중 연결 리스트(doubly linked list) : 두 개의 포인터 존재, 한 개는 이전 노드 또 한 개는 다음 노드 가리킴 원형 연결 리스트(circular linkde list) : 한 개의 포인터 존재, 다음 노드를 가리키고 있고 마지막 노드의 포인터는 처음 노드 가리킴 더블링크드리스트 형태 *멤버 함수(배열의 멤버함수들과 비슷 ) swap(list& l); //리스트의 모든 노드를 리스트 l과 교환 splice(const_iterator pos, list& l); //리스트 l의 모든 노드를 지정한 위치에 삽입(이어붙이기) remove(const v..
2022.12.06 -
배열
1. 정적 배열 장점: 한번 할당하면, 메모리를 추가적으로 할당하거나 해제하지 않아도 됨 특정 위치의 데이터에 접근하는 속도가 빠름 단점: 크기가 고정되어 있어, 필요에 따라 조절 불가 일반적으로 스택 영역에 할당되기 때문에, 최대 크기 제약 -멤버 함수들 reverse_iterator rbegin() //배열을 역으로 했을 때, 그 첫번째 원소를 가리키는 역방향 반복자 반환 쉽게 말해서 맨뒤의 원소 가리킴 reverse_iterator rend() //이건 역으로 했을 때 마지막 원소--> 첫번째 원소at(n) //배열의 n번째 원소 반환 value_type* data() //배열을 포인터 타입으로 반환(배열의 첫번째 주소를 반환) fill(const value_type& val)// 배열의 모든 원소..
2022.12.06 -
Graph Traversals(그래프 순회)
*이웃: 노드가 가리키고 있는 노드 * 갔던 데 또 가는 반복을 피하기 위해 진행됨에 따라 방문한 정점은 표시할 필요가 있다. 1) depth-first search(깊이 우선 탐색)//이웃 하나를 정해서 탐색하고 다음 노드의 이웃 탐색 검색은 시작 정점에서 이웃 중 하나로, 다음으로 이웃의 이웃 중 하나로 진행된다. 검색을 더 진행할 수 없는 경우 백업해야 한다. (전 단계로 돌아가야함) 스택을 사용하거나 재귀적으로 구현할 수 있다. -스택을 이용해서 구현 방법 1. 방문여부를 저장할 배열과 방문한 노드를 저장할 스택 생성 2. 배열을 모두 false로 초기화 3. 탐색 시작->지나온 노드에 해당하는 인덱스는 true로 4. 탐색 노드의 인접 노드들 중 방문하지 않은 노드가 있다면 탐색 노드를 스택에 ..
2022.12.06