본문 바로가기

CS/자료구조24

pointer 방식 LinkedList 자바 구현 코드 포인터를 이용한 방식의 연결 리스트를 만든다. 연결리스트에 필요한 노드 객체를 LinkedList 클래스 내부에 만든다. Node는 데이터용 필드인 data와 자기 자신과 가은 클래스형을 참조하는 next를 필드로 갖는다. 다음 노드를 참조하는 next를 뒤쪽 포인터라고 부를 수 있다. 각 노드의 필드 next에 넣어두는 것은 그 노드의 다음 노드에 대한 참조이다. public class PointerLinkedList { private Node head; private Node current; static class Node{ private E data; private Node next; public Node(E data, Node next) { this.data = data; this.next = n.. 2023. 6. 18.
ring 방식 int queue 자바 구현 코드 자료구조 중 하나인 queue를 ring 방식으로 구현한 코드이다. 이 코드에서 front와 rear 변수는 큐의 원소들이 저장된 배열에서 현재 프런트(front)와 리어(rear)의 위치를 나타낸다. - front: 큐에서 가장 앞에 있는 원소의 인덱스를 가리킨다. deque() 연산이 발생하면 front 값이 증가한다. 즉 한 칸씩 이동한다. - rear: 큐에서 가장 뒤에 있는 원소의 다음 위치를 가리킨다. enque() 연산이 발생하면 rear는 값이 증가한다. 즉 한 칸씩 이동한다. 1. 인큐(enqueue()) 연산: rear 인덱스가 큐의 맨 뒤에 위치하고 있는 상태에서 인큐가 발생하면 rear는 배열의 처음으로 되돌아간다. 이렇게 하면 배열의 처음부터 빈 공간이 있을 때까지 데이터를 저장할.. 2023. 6. 17.
array 방식 int queue 자바 코드 구현 링 버퍼를 사용하지 않고 순수 배열을 이용해 구현한 int queue 이다. 큐의 기본특성인 FIFO 로직을 수행한다. package datastructure.queue.intarrayqueue; public class IntArrayQueue { private int max; private int pointer; private int[] queue; public IntArrayQueue(int capacity) { max = capacity; pointer = 0; queue = new int[max]; } public void enqueue(int value) { if (pointer >= max) { throw new IllegalStateException("큐가 가득 찼습니다."); } queue.. 2023. 6. 17.
int stack 자바 구현 코드 자료구조 중 하나인 Stack을 자바로 구현한 코드이다. int 타입을 처리하는 stack이다. package datastructure.stack.intstack; public class IntStack { private int max; private int pointer; private int[] stack; public IntStack(int capacity) { pointer = 0; max = capacity; try { stack = new int[max]; } catch (OutOfMemoryError e) { max = 0; } } public int push(int value) { if (pointer >= max) { throw new OverflowIntStackException(); .. 2023. 6. 17.