때는 2002년 3월, 대학교 2학년 때 이다. 컴퓨터 공학 전공으로 전공필수 과목으로 처음 Data Structure를 접했다.

당시 1학년 2학기 때, C 언어를 막 배운 상태였고, 2학년 올라오자마자 자료구조를 배우는데 java언어를 통해 배웠다.

당시에는 java 1.2 였던걸로 기억하는데, 정확하지는 않다.

 

아무튼 아무것도 모르는 학부 2학년인데, 갑자기 Stack이니, Queue 이니, Linked List 이니 알수 없는 단어를 쏟아내는 과목이 매우 버거웠다. (2학년때는 공부를 열심히 하지도 않았다!!!)

 

당시에는 이 과목의 필요성이나, 여기서 작성하는 프로그램들이 무엇을 하는것인지 이해할수가 없었고, 숙제로 구현해 오라고 하는데, 대체 무엇을 구현하는 지 조차 알수가 없었다.

당연히 성적은 잘 나오지 않았고, 나에겐 뭔가 숙제 같은 과목이 되었다.

 

나중에 군대다녀오고 복학후에 다시 재수강을 하긴 하였지만, 사실 재수강때 기억은 나질 않는다.

 

지금 다시 그때 과목을 배운다면 참 재밌게 배웠겠다는 생각이 들고, 또 개발자로 10년을 지냈지만 여전히 사용한다는 점에서 매우 중요했던 과목이라고 생각을 하게 되었다.

 

당시에 공부 하던 책을 꺼내보았다.

 

https://www.amazon.ca/Data-Structures-Algorithms-Michael-Goodrich/dp/0471383678

짠! 이책이다..  무려 하드커버...

 

지금부터 여기에 나와있는 자료구조들을 하나하나 구현해보고자 한다.

 

 

 

Data Structure Implement Description
Stack https://ijeee.tistory.com/30 https://github.com/jeng832/DataStructure/tree/master/Stack

Queue

https://ijeee.tistory.com/31 https://github.com/jeng832/DataStructure/tree/master/Queue

Linked List

   

Double-Ended Queue

   

Vector

   

List

   

Sequnce

   

Iterator

   

Tree

   

Binary Tree

   

Priority Queue

 

   

Heap

   

Dictionary

   

Hash

   

Ordered Dictionary

   

Binary Search Tree

   

AVL Tree

   

Multi-Way Search Tree

   

(2,4) Tree

   

Red-Black Tree

   

Graph

   

Directed Graph

   

Weighted Graph

   

많기도 하다...-_- 다할수 있을까?;;;;;

 

'Development > Data Structure' 카테고리의 다른 글

Queue  (0) 2020.08.23
Stack  (0) 2020.06.20

Queue는 LIFO(Last In First Out) 구조로 data를 저장할 수 있는 자료 구조 이다.

Queue는 쉽게 생각하면, 줄서기를 생각할 수 있다.

먼저 저장된(enqueue)된 data는 먼저 빼낼수 있다(dequeue)

 

또한 front() method를 이용하여 Dequeue() 대상이 되는 현재 Queue안에 있는 data 중 가장 먼저 저장된 data가 무엇인지 알수 있다.

 

Queue의 interface는 아래와 같다.

public interface Queue {
    public int size();
    public boolean isEmpty();
    public boolean isFull();
    public Object front();
    public void enqueue(Object elem);
    public Object dequeue();
    public String printQueue();
}

 

Queue는 배열 혹은 List로 구현 할 수 있다.

 

실제 구현은 아래 링크를 참조

 

https://github.com/jeng832/DataStructure/tree/master/Queue

'Development > Data Structure' 카테고리의 다른 글

Data Structure 에 대한 기억  (0) 2020.08.23
Stack  (0) 2020.06.20

1. LIFO구조의 Data Structure, Stack

- push(), pop() 등의 명령어로 Last In First Out 구조를 가지고 data를 저장 할 수 있는 자료 구조

 

2. Stack의 구조 및 interface

가. Stack의 구조

Stack

나. Stack의 interface

public interface Stack {
    public int size();

    public boolean isEmpty();

    public Object top();

    public void push(Object element);

    public Object pop();

    public String printStack();

    public boolean isFull();
}

- 저장은 push()를 통해서 이루어지고, push된 data는 Stack의 제일 상단(top)에 저장

- 저장된 data를 가져올때는 pop()을 사용하고 top에 위치한 data를 가져오며, pop() 된 data는 Stack에서 삭제

- isEmpty(), isFull(), size()를 통해 Stack의 현재 상태 확인 가능

 

 

실제 구현은 아래 github 링크를 통해 확인 가능

https://github.com/jeng832/DataStructure/tree/master/Stack

 

jeng832/DataStructure

Contribute to jeng832/DataStructure development by creating an account on GitHub.

github.com

 

'Development > Data Structure' 카테고리의 다른 글

Data Structure 에 대한 기억  (0) 2020.08.23
Queue  (0) 2020.08.23

+ Recent posts