Java 연결 리스트 기본 개념 및 구현
연결 리스트는 가변 길이의 객체 배열과 유사한 동적 데이터 구조입니다. 이는 데이터 저장 용량 제한이 없고 빠른 탐색 속도를 제공하여 데이터 구조의 여러 문제를 해결합니다. 기존 배열은 고정된 크기로 인해 데이터 삽입, 삭제, 수정 시 번거롭다는 단점이 있습니다. 이러한 단점을 극복하기 위해 연결 리스트는 동적 배열 역할을 수행할 수 있습니다.
연결 리스트의 ...
7월 25일 20:58에 게시됨
구조체를 이용한 동적 단일 연결 리스트 구현
단일 연결 리스트 개념
단일 연결 리스트(Singly Linked List)는 노드(Node)라 불리는 요소들이 포인터로 연결된 선형 자료구조입니다. 각 노드는 두 가지 핵심 요소로 구성됩니다:
데이터 영역: 실제 값을 저장하는 공간
포인터 영역: 다음 노드의 주소를 저장하는 공간
리스트의 시작을 헤드 노드(Head)라 하며, 마지막 노드의 포인터는 NULL 값을 가집니다. 리스 ...
7월 12일 22:25에 게시됨
스택과 큐 자료구조 구현
스택과 큐는 컴퓨터 과학에서 가장 기본적인 자료구조 중 하나로, 각각 후입선출(LIFO)과 선입선출(FIFO) 특성을 가집니다. 이번 글에서는 배열 기반과 연결 리스트 기반의 두 가지 구현 방법을 모두 다룹니다.
스택(Stack) 자료구조
스택은 후입선출(LIFO) 원칙을 따르는 자료구조로, 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다.
배열 기반 스택 구현
/* 스택 헤 ...
7월 7일 20:13에 게시됨
연결 리스트 노드 조작: 쌍 교체, 순위 기반 삭제, 교차점 탐지, 순환 감지
노드 쌍 교체
인접 노드 교체를 위해 가상 헤드 노드를 생성합니다. 현재 포인터를 가상 헤드에 위치시킨 후, 다음 두 노드가 존재할 때까지 반복합니다. 세 개의 임시 포인터를 활용해 노드 연결 관계를 재구성합니다.
class ListNode:
def __init__(self, value=0, next_node=None):
self.val = value
self.next = next_node
def swap_node_pairs(h ...
7월 2일 04:37에 게시됨
C++로 배우는 배열과 연결 리스트 기본 연산
배열 (Array)
1. 배열 초기화
// 스택에 할당
int arr[5];
int nums[5] = { 1, 2, 3, 4, 5 };
// 힙에 할당
int* agg = new int[5];
int* ngg = new int[5] {1, 2, 3, 4, 5};
2. 요소 접근
int getElement(int* data, int idx) {
return *(data + idx);
}
3. 데이터 삽입
void insertElement(int* data, int len, int value, int pos) {
for (int i = len - ...
6월 20일 19:52에 게시됨
무료 자바스크립트 알고리즘 학습 프로젝트 실전 가이드
알고리즘 학습을 위한 효과적인 오픈소스 프로젝트를 소개한다. javascript-algorithms는 200개 이상의 알고리즘과 자료 구조를 자바스크립트로 구현한 저장소로, 각 모듈마다 상세한 설명, 테스트 코드, 성능 분석이 포함되어 있다.
프로젝트 구조 이해하기
이 프로젝트는 모듈식 설계를 채택하여 각 알고리즘이 독립된 모듈로 존재한다. 다음은 주요 디렉터리 구조다:
...
6월 14일 00:37에 게시됨