Programming310 이중 연결 리스트 Doubly Linked List 이번에 소개할 자료구조는 이중 연결 리스트 입니다. 1. 이중 연결 리스트 이중 연결 리스트 혹은 양방향 연결 리스트라고 불리우는 이 자료도 연결 리스트의 일종입니다. 지난번 원형 연결 리스트와 마찬가지로 한 가지 개념만 추가하면 되는데요. 바로 링크필드가 양옆에 있다는 점입니다. 지난번 까지 알아본 리스트의 노드들은 다음과 같이 구성되어있었습니다. 하지만 양방향 링크 필드의 노드는 다음과 같이 구성됩니다. 편의상 앞의 링크 필드는 '왼쪽 링크 필드', 뒤의 링크 필드는 '오른쪽 링크 필드'라고 명명하고 넘어가겠습니다. 왼쪽 링크 필드는 현재 노드의 이전 노드를 가리키고, 오른쪽 링크 필드는 현재 노드의 다음 노드를 가리킵니다. 이렇게 한 노드에서 양방향의 링크를 가리킨다 해서 양방향, 선모양으로 펼쳐놓.. 2021. 9. 10. 팩토리 패턴 Factory Pattern 이번에 소개할 패턴은 팩토리 패턴입니다. 1. 들어가기전에 들어가기전에 new라는 키워드를 집고 넘어가려고 합니다. 갑자기 디자인 패턴하다가 new라는 키워드설명을 왜 하나요 싶겠지만, 팩토리 패턴과 밀접한 관련이 있습니다. 우리가 객체를 생성할때 보통 [객체 객체명 = new 객체생성자]와 같은 방식으로 new를 이용했습니다. 여기서 new라는 것은 생성자를 통해 객체의 인스턴스를 생성하는 것인데요. 이렇게 생성한다는 것은 구체적으로 작성된 클래스를 통해 구현을 한다는 의미입니다. 그래서 객체와 관련한 수정이 발생하면 일일히 관련 코드들을 고쳐야하기에 유지보수면에서 좋지 못한 모습을 보입니다. 그래서 우리는 new 대신에 다른 방식을 이용하는 것을 생각해야합니다.(당연히 무조건 new를 통한 객체 생성.. 2021. 9. 9. 원형 연결 리스트 이번에 소개할 자료구조는 원형 연결 리스트입니다. 1. 원형 연결 리스트 소개 원형이라는 이름에서 볼 수 있듯이 동그란 형태를 가진 연결 리스트입니다. 하지만 연결 리스트 소개에서 이야기 했듯이 실제 물리적으로 원형이 아니라 처음과 끝이 이어져 있기 때문에 원형이라고 불리우는 것 입니다. 지난번 까지 배운 연결 리스트는 head 노드와 tail 노드가 정해져 있어서 시작과 끝이 확실한 하나의 선 같은 구조였습니다. 그러나 원형 연결 리스트는 끝의 주소 필드가 처음을 가리켜서 마치 원형처럼 보이게 됩니다. 2. 노드 정의 노드 구조 자체는 연결리스트와 같이 [데이터 필드-링크 필드] 쌍으로 이루어져있기 때문에 지난번 노드 정의와 다르지 않습니다. typedef struct ListNode { char da.. 2021. 9. 8. 연결 리스트 Linked List 선형 리스트는 일반적인 배열과 다를바 없으므로 다시 작성하는 자료구조에서는 넘어가고 바로 연결 리스트부터 공부를 시작하겠습니다. 0. 연결 리스트 연결 리스트는 선형 리스트와는(순차 자료구조) 다르게 자료의 순서가 존재하지 않는 자료구조 입니다. 순서가 없는 자료구조를 저장하는 방식은 노드(포인터)를 이용하는 방식입니다. 자료는 데이터 필드와 링크 필드 한 쌍으로 구성되어 있는데 데이터에는 실질적으로 사용될 데이터가 있고 링크 필드는 다음 데이터의 주소를 가리키는 정보가 담겨있습니다. 그래서 이것을 그림으로 풀어보면 다음과 같은 모양으로 구성되어있습니다. 이런식으로 연결되있어서 연결 리스트라고 불리우게 됩니다. 그러면 지금부터 노드 구현, 삽입, 삭제를 구현해보도록 하겠습니다. 1. 노드 정의 노드를 구.. 2021. 9. 3. 데코레이터 패턴 Decorator Pattern 이번에 소개할 패턴은 데코레이터 패턴입니다. 데코레이터 패턴은 Structural Pattern에 속합니다. 1. 데코레이터 패턴 소개 어디선가 한 번쯤은 "데코레이션"이라는 말을 들어봤을 것입니다. 케이크 위에 과일이나 장식을 얹는 것, 음료에 가니쉬나 다양한 첨가물을 넣는 것들을 우리는 데코레이션 이라고 합니다. 이처럼 한 객체 위에 기능들을 입혀서 사용 목적에 걸맞는 객체로 만드는 것을 데코레이션 패턴이라고 합니다. 예를들면, 케이크 빵위에 생크림을 바르면 생크림 케이크, 초코를 바르면 초코 케이크가 되고, 같은 생크림 케이크 라도 과일을 올릴 수도 있고, 초코를 올릴 수도 있죠. 심지어는 같은 장식(기능)이라도 케이크 빵대신 베이글을 넣을 수도 있습니다. 이처럼 각기 다른 베이스를 가지고 장식을 .. 2021. 9. 2. 옵저버 패턴 Observer Pattern 첫번째로 소개할 패턴은 옵저버(Observer) 패턴 입니다. 옵저버는 관찰자라는 의미를 갖고있는데, 이 패턴이 변화가 발생하게 됨에 따라 객체들에게 알려주는 역할을 하기 때문에 옵저버 패턴이라는 이름을 가지게 되었습니다. 1. 옵저버 패턴 소개 서론에서 간단하게 이야기 했듯이 옵저버 패턴이란, 어떤 주제(속성, 값) 객체가 변화하게 되면 그와 연관된(1개 이상)의 객체 들에게 변화를 알리는 패턴입니다. 여기서 주제 객체는 관찰 대상, 그와 연관된 객체는 옵저버 라고 부릅니다. 따라서 옵저버들은 관찰 대상을 관찰하다가 관찰 대상이 변화하면 그에 따른 이벤트 등을 처리합니다. 관찰 대상과 옵저버들은 느슨한 연결을 가집니다. 느슨한 연결이란 객체 사이에 상호작용이 이루어지지만 직접적인 관계는 없는 상태를 의.. 2021. 9. 1. 이전 1 ··· 25 26 27 28 29 30 31 ··· 52 다음 300x250