[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..
[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 ..
[Data Structure] 큐(1) 선형 큐 구현과 단점
·
Algorithm&Data Structure
큐의 개념 선형자료구조인 큐는 FIFO(선입선출) 구조의 자료구조이다. 스택은 데이터가 들어가는 입구와 출구가 공유된 자료구조라면 큐는 입구와 출구가 서로 다른 곳에 존재한다.     큐의 주요 메서드와 front, rear 큐는 기본적으로 front와 rear 가장 처음 큐에 들어온 데이터를 front로 마지막에 들어온 데이터를 rear로 추적 관리한다.(위 그림에서는 A가 front C가 rear라고 볼 수 있다.)  큐에다가 데이터를 넣는 과정을 enqueue,  데이터를 꺼내는 과정을 dequeue라고 부른다. enqueue, dequeue 기능 말고도 스택처럼 peek, size 등 상황에 맞게 기능을 추가해도 된다.  overflow (큐가 꽉 찬 상태)   정적 할당 큐인 경우 count 변..
하나의 배열을 공유하는 2개의 스택
·
Algorithm&Data Structure
문제  하나의 배열을 공유하여 2개의 스택을 구현하는 int형 데이터용 스택 클래스를 만들어라.      접근법   하나의 배열에 맨 처음 index와 맨 마지막 index 값을 적절히 사용한다. 여기서 맨 처음 index는 스택 A의  포인터이고 맨 마지막 index는 스택 B의 포인터로 사용한다.     Stack Interface package stack;public interface StackAssignment3Inter { int firstPush(int value); //앞쪽 스택에 값 넣는 메서드 int firstPop(); //앞쪽 스택에 값 빼는 메서드 int secondPush(int value); //뒤쪽 스택에 값 넣는 메서드 int secondPop(); //..