Programming/Data Structure & Algorithms 7

[자료구조] 연결리스트로 Stack(스택) 구현해보기

Stack은 추상자료형(Abstract Data Type , ADT)이기 때문에 구현 방법을 따로 명시하지 않아 어떤 방법으로든 구현이 가능하다. 보통 Array, LinkedList, Deque 중에서 사용하는데, 이 글은 LinkedList를 통해 Stack을 구현하는 방법을 소개한다. Stack 자료구조란? Stack 자료구조를 tail이 없는 LinkedList라고 생각하면 쉽다. LinkedList에서는 head를 제외하면 포인터를 이용해 노드에 접근하기 때문에 중간 노드로의 바로 접근이 불가하다. Stack도 이와 마찬가지로 중간으로의 접근이 불가하고 항상 LinkedList의 head에 해당하는 top에서만 접근이 가능하다. 그림으로 표현하면 아래와 같다. Stack은 그림과 같이 접시처럼 ..

[자료구조] 이진트리(Binary Tree)와 이진탐색트리(Binary Search Tree)

트리(Tree) 자료구조의 개념 및 사용용어 트리 자료구조와 비슷한 자료구조는 LinkedList가 있다 . 아래의 예시는 Singly LinkedList(단일 링크드리스트)의 구조인데, 노드의 value와 다음 노드를 가리키는 next(포인터)로 구성되어있다. 해당 노드는 value가 5이고 포인터가 null을 가리키고 있기 때문에 next의 값은 null이 된다. LinkedList의 노드의 저장형식을 코드로 표현하면 아래와 같은 방식으로 저장되며 HashMap의 key-value 쌍과 비슷한 value-next 쌍으로 저장이 된다. 트리 자료구조는 노드의 포인터가 left와 right으로 설계되있다. 이를 코드로 표현하면 value-left-right으로 저장되는 것을 알 수 있다. left와 ri..

[자료구조] 파이썬(Python) VS 자바(Java) 주요 자료구조 비교해보기

파이썬과 자바의 주요 자료구조를 비교해보았다. 비교항목 Array : Java Array VS Python List List : Java ArrayList VS Python List LinkedList : Java LinkedList VS Python Collections.deque Map : Java HashMap VS Python Dictionary Set : Java HashSet VS Python Set 1. Array : Java Array VS Python List Java Array 자바에서 배열(Array)의 크기는 정적(static)이기 때문에 각 요소의 값을 변경하는 것은 가능하지만 크기를 줄이거나 늘릴 수 없다. 처음 선언된 배열의 크기를 변경하는 경우 새로운 메모리 블록이 힙 영역에..

[자료구조] 자바 java.util.LinkedList의 주요 메소드 정리

이 글은 java.util. LinkedList 를 공부하면서 중요하다고 생각되는 메소드를 정리하였다. 1. Constructor public class LinkedList{ private Node head; //첫번째 노드 private Node tail; //마지막 노드 private int length; //노드의 수 class Node{ // Linked List 내부에 Node가 nested 클래스로 들어있음 int value; // 데이터 Node next;// 포인터 Node(int value){ // Node생성자 , 데이터를 파라메터로 받음 this.value = value; } } public LinkedList(int value){ // LinkedList의 생성자 Node newNo..

[자료구조] 추상자료형(ADT, Abstract Data Type)과 자료구조(Data Structure)

추상자료형 (ADT, Abstract Data Type) 프로그래밍에서 “superType”이라고 불린다(인터페이스와 추상클래스처럼 파생된 하위형식에 자신의 특성을 제공함) 기본 동작(basic behavior)만을 정의한다(실제로 어떻게 구현되는지에 대한 세부사항은 제외하고 해당 데이터 타입이 제공해야 하는 기본 동작만을 정의한다) 종합해보면 추상자료형(ADT)은 자료구조를 위한 설계도라고 볼 수 있다. 종류 대표적인 추상자료형(ADT)은 스택(STACK)과 큐( QUEUE)를 들 수 있다. 이들은 데이터를 조직화하고 특정 동작만을 수행하기 위한 추상적인 모델을 제공한다. 스택(Stack) Last In, First Out (LIFO) 방식을 따르는 자료구조로, 마지막에 추가된 항목이 가장 먼저 제거되..