[Data Structure] Doubly Linked List 양방향 연결 리스트
·
Algorithm&Data Structure
✅바로 가기 Doubly Linked List 서론 리스트 인터페이스 노드 클래스 리스트 생성자와 필드, 내부 클래스 search(int index) add() remove() isEmpty(), isFull(), get(int index), set(int index, E element) indexOf(E element), contains(E element)size(), capacity(), toArray() 전체코드 Doubly Linked List는 노드가 앞 뒤를 가리키는 링크가 존재하는 구조이다. Singly Linked List와 달리 노드가 앞 뒤 노드를 가리키고 있는 구조인 것이다. Doubly Linked List의 장점은? 각 노드가 다음(next)과 이전 (..
[Data Structure] 싱글 링크드 리스트 (Singly LinkedList)
·
Algorithm&Data Structure
↘️바로가기더보기링크드리스트란?리스트 인터페이스노드클래스리스트 생성자와 필드search(int index)add 메서드들(추가)전체 코드각 종 메서드들 (크기, 출력 등)get(),set(index,E)indexOf(target), contains(target)isEmpty, isFullremove 메서드들(삭제)전체코드 ✨링크드리스트란? 이번 글에서는 싱글 링크드 리스트를 구현해 보겠다. 우선 ArrayList를 먼저 구현해 보고 학습해 보는 것을 권장한다.https://0dedicated.tistory.com/49 싱글 링크드 리스트 (단순 연결 구조의 리스트)는 배열과 ArrayList와는 구조가 다르다. 연결된 구조 (Linked List)에서는 자료(데이터와, 링크값)를 노드에 담아 관리..
[Data Structure] Array List 구현
·
Algorithm&Data Structure
[구현 바로 가기]더보기List 인터페이스ArrayList 클래스 생성자, 필드, 동적 할당addremove각 종 유틸리티 Array List는 자료구조에서 제일 기본이자 핵심적인 자료구조이다. 🎯Array List와 Array의 차이는 뭘까? int[] arr = new int[5]; 이런 배열은 한 번 배열의 크기를 정해주면 끝까지 최대 5의 값의 공간을 지닌다. 일반 배열은 고정된 크기의 자료 구조이고 타입은 기본형, 참조형 모두 가능하다. 일반 배열은 성능이 좋고 구조가 단순하다. 계획적인 프로그래밍에서는 메모리가 더 효율적일 수 있다. 일반 배열의 한계 1. 크기가 고정되어 메모리 낭비나 크기가 부족할 때 문제가 생긴다. 2. 기능들이 부족하다. 동적 배열을 위한 ArrayL..
[Git] 기초 명령어 (1)
·
Git & GitHub
Git이란? Git의 기본 구조 1. Working Directory (작업 디렉터리) 실제로 코드를 수정하는 곳2. Staging Area: 커밋할 준비가 된 파일들이 있는 곳3. Repository: 커밋들이 저장되는 로컬 저장소 git init 현재 폴더를 Git 저장소로 초기화..git 폴더가 생성되어 Git이 버전 관리하게 된다. Git이 파일을 추적하게 된다. git init git status 어떤 파일이 수정되었고, 어떤 파일이 스테이징 되어 있는지 확인하는 명령어현재 디렉토리 상태 확인하는 명령어이다.git status git staus 명령어를 입력하면 크게 세 가지를 알려준다. 1. 현재 브랜치 이름2. 커밋되지 않은 변경 사항 (수정, 삭제, 새 파일 등)3. 어떤 파..
[Java] 불변 객체
·
Java
자바에서 데이터 타입은 크게 기본형과 참조형으로 나뉜다. 기본형: 하나의 값을 여러 변수에서 공유하지 않는다.참조형: 하나의 객체를 참조값을 통해 여러 변수가 공유한다. 기본형 값 복사 package immutableBlog;public class CallByValue { public static void main(String[] args) { int a = 7; int b = a; System.out.println("a = " + a); System.out.println("b = " + b); b = 300; System.out.println("a = " + a); System.out.println("b =..
[Data Structure] 덱
·
Algorithm&Data Structure
이번에는 덱 구조에 대해 구현해 보자. 큐는 전단부에서는 삭제만 가능하고 후단부에서는 삽입을 하는 구조이다. 덱은 큐와 비슷하지만 전단부 후단부 모두 삽입 삭제가 가능한 선형 자료구조이다. 덱은 원형 큐와 동일하게 원형적으로 순환하는 구조이다. 덱을 구현하기 전 꼭 원형 큐를 구현해 보고 덱을 구현해 보는 것이 학습에 도움이 될 것 같다. 덱의 특징 덱은 Double Ended Queue로 큐의 확장된 형태라고 볼 수 있다. 앞(front) 뒤(rear) 모두 데이터 삽입 삭제 연산이 가능하며 기본적으로 큐와 동일하게 선입선출 FIFO가 기본이지만 유연하게 양쪽 접근이 가능하다. 덱이 쓰이는 곳덱은 앞 뒤에서 비교하는 로직에서 사용되고 슬라이딩 윈도우 최댓값/최솟값 문제에서도 사용된다. 운영체제 ..
[Data Structure] 원형 큐
·
Algorithm&Data Structure
선형 큐 구조로 구현하면 문제점은 배열의 공간 낭비가 발생한다. 이런 문제점을 해결하기 위해 원형 큐로 큐를 구현하면 된다. 선형 큐와 동일하게 rear에서 데이터가 삽입되고 front에서 데이터가 삭제되는 구조이다. 원형 큐는 배열을 원 모양으로 둥글게 말은 형태이다. 더보기원형 큐 인터페이스 코드 package queue;/* enpueue(Object o) depueue() peek() isEmpty() isFull() indexOf() clear() */public interface QueueInterface { public void enQueue(T item); public void deQueue(); public void peek(); public ..