데이터 구조란 무엇입니까?
데이터 구조는 데이터를 저장하고 구성하는 데 사용되는 저장소입니다. 컴퓨터에서 데이터를 효율적으로 액세스하고 업데이트할 수 있도록 배열하는 방법입니다.
데이터 구조는 데이터를 구성하는 데에만 사용되는 것이 아닙니다. 또한 데이터 처리, 검색 및 저장에도 사용됩니다. 개발된 거의 모든 프로그램이나 소프트웨어 시스템에는 다양한 기본 및 고급 유형의 데이터 구조가 사용됩니다. 그러므로 우리는 자료구조에 대한 지식이 풍부해야 합니다.
데이터 구조 메모리에 데이터를 배열하는 데 사용되는 컴퓨터의 필수 부분입니다. 이들은 데이터를 효율적으로 구성, 처리, 액세스 및 저장하는 데 필수적이며 책임이 있습니다. 그러나 이것이 전부는 아닙니다. 다양한 유형의 데이터 구조에는 특성, 기능, 응용 프로그램, 장점 및 단점이 있습니다. 그렇다면 특정 작업에 적합한 데이터 구조를 어떻게 식별합니까? '데이터 구조'라는 용어는 무엇을 의미합니까? 데이터 구조에는 몇 가지 유형이 있으며 어떤 용도로 사용됩니까?

데이터 구조란 무엇입니까: 유형, 분류 및 응용 프로그램
우리는 당신을 보호해 주었습니다. 우리는 데이터 구조가 무엇인지, 데이터 구조의 유형은 무엇인지, 데이터 구조의 분류, 각 데이터 구조의 적용 등에 관한 모든 것에 대한 전체 목록을 만들었습니다. 이 글에서는 단 몇 분 만에 가장 좋은 것을 선택할 수 있도록 각 데이터 구조의 모든 측면을 논의할 것입니다.
목차
데이터 구조가 데이터 유형에 따라 어떻게 다른지:
우리는 이미 데이터 구조에 대해 배웠습니다. 많은 경우 사람들은 데이터 유형과 데이터 구조를 혼동합니다. 따라서 명확하게 하기 위해 데이터 유형과 데이터 구조 간의 몇 가지 차이점을 살펴보겠습니다.
데이터 형식 | 데이터 구조 |
---|---|
데이터 유형은 값을 할당할 수 있는 변수의 형태입니다. 이는 특정 변수가 주어진 데이터 유형의 값만 할당하도록 정의합니다. | 데이터 구조는 다양한 종류의 데이터를 모아 놓은 것입니다. 그 전체 데이터는 객체를 사용하여 표현될 수 있으며 프로그램 전체에서 사용될 수 있습니다. |
가치는 담을 수 있지만 데이터는 담을 수 없습니다. 따라서 데이터가 없습니다. | 단일 개체 내에 여러 유형의 데이터를 보유할 수 있습니다. |
데이터 유형의 구현을 추상 구현이라고 합니다. foreach 자바 | 데이터 구조 구현을 구체적인 구현이라고 합니다. |
데이터 유형의 경우 시간 복잡도가 없습니다. | 데이터 구조 객체에서는 시간 복잡도가 중요한 역할을 합니다. |
데이터 타입의 경우, 데이터의 값은 저장할 수 있는 데이터의 타입만을 나타내기 때문에 저장되지 않습니다. | 데이터 구조의 경우 데이터와 그 값은 컴퓨터의 메인 메모리 공간을 차지합니다. 또한 데이터 구조는 하나의 단일 객체 내에 다양한 종류와 유형의 데이터를 보유할 수 있습니다. |
데이터 유형의 예로는 int, float, double 등이 있습니다. | 데이터 구조의 예로는 스택, 큐, 트리 등이 있습니다. |
데이터 구조 분류:
데이터 구조는 일상 생활에서 다양한 용도로 사용됩니다. 다양한 수학적, 논리적 문제를 해결하는 데 사용되는 다양한 데이터 구조가 있습니다. 데이터 구조를 이용하면 비교적 짧은 시간 내에 매우 많은 양의 데이터를 정리하고 처리할 수 있습니다. 다양한 상황에서 사용되는 다양한 데이터 구조를 살펴보겠습니다.

데이터 구조의 분류
- 선형 데이터 구조: 데이터 요소가 순차적 또는 선형으로 배열되고 각 요소가 이전 및 다음 인접 요소에 첨부되는 데이터 구조를 선형 데이터 구조라고 합니다.
선형 데이터 구조의 예로는 배열, 스택, 큐, 연결 리스트 등이 있습니다.- 정적 데이터 구조: 정적 데이터 구조에는 고정된 메모리 크기가 있습니다. 정적 데이터 구조의 요소에 액세스하는 것이 더 쉽습니다.
이 데이터 구조의 예는 배열입니다. - 동적 데이터 구조: 동적 데이터 구조에서는 크기가 고정되어 있지 않습니다. 이는 코드의 메모리(공간) 복잡성과 관련하여 효율적인 것으로 간주될 수 있는 런타임 중에 무작위로 업데이트될 수 있습니다.
이러한 데이터 구조의 예로는 큐, 스택 등이 있습니다.
- 정적 데이터 구조: 정적 데이터 구조에는 고정된 메모리 크기가 있습니다. 정적 데이터 구조의 요소에 액세스하는 것이 더 쉽습니다.
- 비선형 데이터 구조: 데이터 요소가 순차적으로 또는 선형적으로 배치되지 않은 데이터 구조를 비선형 데이터 구조라고 합니다. 비선형 데이터 구조에서는 단일 실행만으로 모든 요소를 탐색할 수 없습니다.
비선형 데이터 구조의 예로는 트리와 그래프가 있습니다.
데이터 구조의 필요성:
데이터의 구조와 알고리즘의 합성은 서로 상대적입니다. 데이터 표현은 개발자는 물론 사용자도 작업을 효율적으로 구현할 수 있도록 이해하기 쉬워야 합니다.
데이터 구조는 데이터를 구성, 검색, 관리 및 저장하는 쉬운 방법을 제공합니다.
다음은 데이터 요구사항 목록입니다.
- 데이터 구조 수정이 쉽습니다.
- 시간이 덜 걸립니다.
- 저장 메모리 공간을 절약하십시오.
- 데이터 표현이 쉽습니다.
- 대규모 데이터베이스에 쉽게 접근할 수 있습니다.
어레이:
배열은 선형 데이터 구조이며 인접한 메모리 위치에 저장된 항목의 모음입니다. 동일한 유형의 여러 항목을 한 곳에 함께 보관하는 것이 아이디어입니다. 비교적 짧은 시간에 많은 양의 데이터를 처리할 수 있습니다. 배열의 첫 번째 요소는 아래 첨자 0으로 인덱싱됩니다. 배열에는 검색, 정렬, 삽입, 순회, 반전 및 삭제와 같은 다양한 작업이 가능합니다.
자바 스캐너 클래스

정렬
어레이의 특성:
배열은 다음과 같은 다양한 특성을 가지고 있습니다.
- 배열은 인덱스를 사용하여 배열의 각 요소를 쉽게 식별하는 데 도움이 되는 인덱스 기반 데이터 구조를 사용합니다.
- 사용자가 동일한 데이터 유형의 여러 값을 저장하려는 경우 배열을 효율적으로 활용할 수 있습니다.
- 배열은 2차원 배열에 데이터를 저장하여 복잡한 데이터 구조를 처리할 수도 있습니다.
- 배열은 스택, 큐, 힙, 해시 테이블 등과 같은 다른 데이터 구조를 구현하는 데에도 사용됩니다.
- 배열의 검색 프로세스는 매우 쉽게 수행할 수 있습니다.
스토리지에서 수행되는 작업:
- 초기화 : 선언 시 또는 나중에 대입문을 사용하여 배열을 값으로 초기화할 수 있습니다.
- 요소 액세스: 배열의 요소는 인덱스로 액세스할 수 있습니다. 인덱스는 0부터 시작하여 배열 크기에서 1을 뺀 크기까지 증가합니다.
- 요소 검색 : 선형 검색 또는 이진 검색 알고리즘을 사용하여 배열에서 특정 요소를 검색할 수 있습니다.
- 요소 정렬 : 배열의 요소는 버블 정렬, 삽입 정렬 또는 빠른 정렬과 같은 알고리즘을 사용하여 오름차순 또는 내림차순으로 정렬될 수 있습니다.
- 요소 삽입: 배열의 특정 위치에 요소를 삽입할 수 있지만 이 작업을 수행하려면 배열의 기존 요소를 이동해야 하므로 시간이 많이 걸릴 수 있습니다.
- 요소 삭제: 간격을 채우기 위해 뒤에 오는 요소를 이동하여 배열에서 요소를 삭제할 수 있습니다.
- 요소 업데이트 중: 특정 인덱스에 새 값을 할당하여 배열의 요소를 업데이트하거나 수정할 수 있습니다.
- 횡단 요소: 배열의 요소는 각 요소를 한 번씩 방문하여 순서대로 탐색할 수 있습니다.
다음은 어레이에서 수행되는 가장 일반적인 작업 중 일부입니다. 사용되는 특정 작업과 알고리즘은 문제의 요구 사항과 사용되는 프로그래밍 언어에 따라 달라질 수 있습니다.
배열의 응용:
배열의 다양한 적용은 다음과 같습니다.
- 배열은 행렬 문제를 해결하는 데 사용됩니다.
- 데이터베이스 레코드도 배열로 구현됩니다.
- 정렬 알고리즘을 구현하는 데 도움이 됩니다.
- 또한 스택, 큐, 힙, 해시 테이블 등과 같은 다른 데이터 구조를 구현하는 데에도 사용됩니다.
- 배열은 CPU 스케줄링에 사용될 수 있습니다.
- 컴퓨터에서 조회 테이블로 적용할 수 있습니다.
- 배열은 모든 음성 신호가 배열인 음성 처리에 사용될 수 있습니다.
- 컴퓨터의 화면도 배열로 표시됩니다. 여기서는 다차원 배열을 사용합니다.
- 이 어레이는 도서관, 학생, 의회 등과 같은 다양한 관리 시스템에서 사용됩니다.
- 배열은 온라인 티켓 예약 시스템에서 사용됩니다. 휴대폰의 연락처는 이 배열로 표시됩니다.
- 온라인 체스와 같은 게임에서는 플레이어가 현재 수는 물론 과거 수를 저장할 수 있습니다. 위치에 대한 힌트를 나타냅니다.
- 안드로이드에서 특정 크기의 이미지를 저장하려면 Like 360*1200
어레이의 실제 응용:
- 배열은 수학적 계산을 위한 데이터를 저장하는 데 자주 사용됩니다.
- 이미지 처리에 사용됩니다.
- 기록 관리에도 사용됩니다.
- 책 페이지는 배열의 실제 예이기도 합니다.
- 상자를 주문할 때도 사용됩니다.
배열을 시작하고 싶으십니까? 모범 사례를 위해 선별된 기사와 목록을 시험해 볼 수 있습니다.
- 배열 데이터 구조 소개
- 인터뷰를 위한 상위 50가지 어레이 코딩 문제
- techcodeview.com의 연습 배열 문제
연결 목록:
연결된 목록은 요소가 인접한 메모리 위치에 저장되지 않는 선형 데이터 구조입니다. 연결된 목록의 요소는 아래 이미지와 같이 포인터를 사용하여 연결됩니다.
연결 목록의 유형:
- 단일 연결 목록
- 이중 연결 리스트
- 순환 연결 리스트
- 이중 순환 연결 리스트

연결리스트
연결 목록의 특징:
연결리스트는 다음과 같은 다양한 특징을 가지고 있습니다.
- 연결된 목록은 링크를 저장하기 위해 추가 메모리를 사용합니다.
- 연결된 목록을 초기화하는 동안 요소의 크기를 알 필요가 없습니다.
- 연결리스트는 스택, 큐, 그래프 등을 구현하는 데 사용됩니다.
- 연결리스트의 첫 번째 노드를 헤드(Head)라고 합니다.
- 마지막 노드의 다음 포인터는 항상 NULL을 가리킵니다.
- 연결리스트에서는 삽입과 삭제가 쉽게 가능하다.
- 연결된 목록의 각 노드는 다음 노드의 주소인 포인터/링크로 구성됩니다.
- 연결된 목록은 언제든지 쉽게 줄어들거나 늘어날 수 있습니다.
연결 목록에서 수행되는 작업:
연결리스트(Linked List)는 각 노드가 값과 다음 노드에 대한 참조를 포함하는 선형 데이터 구조입니다. 연결된 목록에서 수행되는 몇 가지 일반적인 작업은 다음과 같습니다.
- 초기화: 연결된 목록은 첫 번째 노드를 참조하여 헤드 노드를 생성하여 초기화할 수 있습니다. 각 후속 노드에는 값과 다음 노드에 대한 참조가 포함됩니다.
- 요소 삽입: 요소는 연결된 목록의 머리, 꼬리 또는 특정 위치에 삽입될 수 있습니다.
- 요소 삭제 : 다음 노드를 가리키도록 이전 노드의 참조를 업데이트하여 목록에서 현재 노드를 효과적으로 제거함으로써 연결 목록에서 요소를 삭제할 수 있습니다.
- 요소 검색 : 연결된 목록은 헤드 노드부터 시작하여 원하는 요소를 찾을 때까지 다음 노드에 대한 참조를 따라가는 방식으로 특정 요소를 검색할 수 있습니다.
- 요소 업데이트 : 연결된 목록의 요소는 특정 노드의 값을 수정하여 업데이트할 수 있습니다.
- 횡단 요소: 연결된 목록의 요소는 헤드 노드에서 시작하여 목록 끝에 도달할 때까지 다음 노드에 대한 참조를 따라 순회할 수 있습니다.
- 연결리스트 뒤집기 : 각 노드의 참조를 업데이트하여 다음 노드가 아닌 이전 노드를 가리키도록 연결 목록을 되돌릴 수 있습니다.
다음은 연결된 목록에서 수행되는 가장 일반적인 작업 중 일부입니다. 사용되는 특정 작업과 알고리즘은 문제의 요구 사항과 사용되는 프로그래밍 언어에 따라 달라질 수 있습니다.
연결 목록의 응용:
연결리스트의 다양한 적용은 다음과 같습니다.
- 연결리스트는 스택, 큐, 그래프 등을 구현하는 데 사용됩니다.
- 연결된 목록은 긴 정수에 대한 산술 연산을 수행하는 데 사용됩니다.
- 희소 행렬을 표현하는 데 사용됩니다.
- 파일의 링크 할당에 사용됩니다.
- 메모리 관리에 도움이 됩니다.
- 이는 각 다항식 항이 연결된 목록의 노드를 나타내는 다항식 조작(Polynomial Manipulation)의 표현에 사용됩니다.
- 연결된 목록은 이미지 컨테이너를 표시하는 데 사용됩니다. 사용자는 과거, 현재, 다음 이미지를 방문할 수 있습니다.
- 방문한 페이지의 기록을 저장하는 데 사용됩니다.
- 실행 취소 작업을 수행하는 데 사용됩니다.
- Linked는 태그의 올바른 구문을 나타내는 소프트웨어 개발에 사용됩니다.
- 연결 목록은 소셜 미디어 피드를 표시하는 데 사용됩니다.
연결 목록의 실제 응용 프로그램:
- 연결된 목록은 멀티플레이어 게임의 차례를 추적하기 위해 라운드 로빈 스케줄링에 사용됩니다.
- 이미지 뷰어에서 사용됩니다. 이전 및 다음 이미지는 연결되어 있으므로 이전 및 다음 버튼으로 액세스할 수 있습니다.
- 음악 재생 목록에서는 노래가 이전 노래와 다음 노래에 연결됩니다.
연결리스트를 시작하고 싶으신가요? 모범 사례를 위해 선별된 기사와 목록을 시험해 볼 수 있습니다.
- 연결리스트 데이터 구조 소개
- 상위 20개 연결 목록 인터뷰 질문
- techcodeview.com에서 연결 목록 문제 연습
스택:
스택은 작업이 수행되는 특정 순서를 따르는 선형 데이터 구조입니다. 순서는 LIFO(후입선출) . 데이터 입력 및 검색은 한쪽에서만 가능합니다. 데이터를 입력하고 검색하는 것을 스택의 푸시 및 팝 작업이라고도 합니다. 재귀를 사용하여 스택 반전, 정렬, 스택의 중간 요소 삭제 등과 같이 스택에는 다양한 작업이 가능합니다.
스택
스택의 특성:
스택에는 다음과 같은 다양한 특성이 있습니다.
- 스택은 하노이 타워, 트리 순회, 재귀 등과 같은 다양한 알고리즘에 사용됩니다.
- 스택은 배열이나 연결리스트를 통해 구현됩니다.
- 이는 후입선출(Last In First Out) 작업을 따릅니다. 즉, 먼저 삽입된 요소가 마지막에 삽입되고 그 반대의 경우도 마찬가지입니다.
- 삽입과 삭제는 한쪽 끝, 즉 스택의 맨 위에서 수행됩니다.
- 스택에서 스택에 할당된 공간이 가득 찬 경우에도 누군가가 더 많은 요소를 추가하려고 하면 스택 오버플로가 발생합니다.
스택의 응용:
스택의 다양한 응용 프로그램은 다음과 같습니다.
- 스택 데이터 구조는 산술 표현식의 평가 및 변환에 사용됩니다.
- 괄호 검사에 사용됩니다.
- 문자열을 뒤집는 동안 스택도 사용됩니다.
- 스택은 메모리 관리에 사용됩니다.
- 함수 호출을 처리하는 데에도 사용됩니다.
- 스택은 표현식을 중위에서 후위로 변환하는 데 사용됩니다.
- 스택은 워드 프로세서에서 실행 취소 및 다시 실행 작업을 수행하는 데 사용됩니다.
- 스택은 JVM과 같은 가상 머신에서 사용됩니다.
- 스택은 미디어 플레이어에서 사용됩니다. 다음곡과 이전곡을 재생하는데 유용합니다.
- 스택은 재귀 작업에 사용됩니다.
스택에서 수행되는 작업 ;
스택은 LIFO(후입선출) 원칙을 구현하는 선형 데이터 구조입니다. 다음은 스택에서 수행되는 몇 가지 일반적인 작업입니다.
- 푸시 : 요소를 스택 맨 위로 푸시하여 스택 맨 위에 새 요소를 추가할 수 있습니다.
- 팝 : 팝 작업을 수행하여 스택에서 최상위 요소를 제거할 수 있으며, 스택에 푸시된 마지막 요소를 효과적으로 제거할 수 있습니다.
- 몰래 엿보다: peek 작업을 사용하면 스택에서 제거하지 않고도 최상위 요소를 검사할 수 있습니다.
- 비었다 : 스택이 비어 있는지 확인하기 위해 검사를 수행할 수 있습니다.
- 크기 : 스택의 요소 수는 크기 연산을 사용하여 결정할 수 있습니다.
다음은 스택에서 수행되는 가장 일반적인 작업 중 일부입니다. 사용되는 특정 작업과 알고리즘은 문제의 요구 사항과 사용되는 프로그래밍 언어에 따라 달라질 수 있습니다. 스택은 표현식 평가, 컴퓨터 프로그램의 함수 호출 스택 구현 등과 같은 응용 프로그램에서 일반적으로 사용됩니다.
스택의 실제 애플리케이션:
- 스택의 실제 예는 서로 위에 배열된 먹는 접시의 층입니다. 더미에서 접시를 제거하면 접시를 더미 맨 위로 가져갈 수 있습니다. 그러나 이것은 바로 가장 최근에 더미에 추가된 판입니다. 접시를 더미 맨 아래에 두려면 더미 위에 있는 모든 접시를 제거해야 합니다.
- 브라우저는 스택 데이터 구조를 사용하여 이전에 방문한 사이트를 추적합니다.
- 모바일의 통화기록도 스택 데이터 구조를 사용합니다.
스택을 시작하고 싶으신가요? 모범 사례를 위해 선별된 기사와 목록을 시험해 볼 수 있습니다.
웹 브라우저 설정
- techcodeview.com의 연습 스택 문제
대기줄:
큐는 작업이 수행되는 특정 순서를 따르는 선형 데이터 구조입니다. 순서는 선입선출(FIFO) 즉, 먼저 저장된 데이터 항목이 먼저 액세스됩니다. 여기서 데이터 입력 및 검색은 한쪽 끝에서만 수행되지 않습니다. 대기열의 예로는 먼저 온 소비자가 먼저 제공되는 리소스에 대한 소비자 대기열이 있습니다. 큐 반전(재귀 사용 또는 사용 안 함), 큐의 처음 K개 요소 반전 등과 같은 다양한 작업이 큐에서 수행됩니다. 큐에서 수행되는 몇 가지 기본 작업은 큐에 넣기, 큐에서 빼기, 앞, 뒤 등입니다.

대기줄
대기열의 특성:
대기열에는 다음과 같은 다양한 특성이 있습니다.
- 큐는 FIFO(선입선출) 구조입니다.
- 대기열의 마지막 요소를 제거하려면 대기열의 새 요소 앞에 삽입된 모든 요소를 제거해야 합니다.
- 큐는 유사한 데이터 유형의 요소를 순서대로 나열한 목록입니다.
대기열의 응용:
Queue의 다양한 적용은 다음과 같습니다.
- 대기열은 웹사이트 트래픽을 처리하는 데 사용됩니다.
- 미디어 플레이어에서 재생 목록을 유지하는 데 도움이 됩니다.
- 대기열은 운영 체제에서 인터럽트를 처리하기 위해 사용됩니다.
- 프린터, CPU 작업 스케줄링 등과 같은 단일 공유 리소스에 대한 요청을 처리하는 데 도움이 됩니다.
- 이는 데이터의 비동기 전송에 사용됩니다. 파이프, 파일 IO 및 소켓.
- 대기열은 운영 체제에서 작업 예약에 사용됩니다.
- 소셜 미디어에서는 여러 사진이나 동영상을 업로드하는 대기열이 사용됩니다.
- 전자 메일 대기열 데이터 구조를 보내는 데 사용됩니다.
- 대기열이 사용되는 시간에 웹 사이트 트래픽을 처리합니다.
- Windows 운영 체제에서 여러 응용 프로그램을 전환합니다.
대기열에서 수행되는 작업:
큐는 FIFO(선입선출) 원칙을 구현하는 선형 데이터 구조입니다. 다음은 대기열에서 수행되는 몇 가지 일반적인 작업입니다.
- 대기열에 추가 : 대기열의 뒤쪽에 요소를 추가하고 대기열의 끝에 새 요소를 추가할 수 있습니다.
- 따라서 : Dequeue 작업을 수행하여 대기열에서 맨 앞의 요소를 제거할 수 있으며, 이는 대기열에 추가된 첫 번째 요소를 효과적으로 제거합니다.
- 몰래 엿보다 : peek 작업을 사용하면 큐에서 제거하지 않고도 앞 요소를 검사할 수 있습니다.
- 비었다 : 대기열이 비어 있는지 확인하기 위해 검사를 수행할 수 있습니다.
- 크기 : 큐의 요소 수는 크기 작업을 사용하여 결정할 수 있습니다.
이는 대기열에서 수행되는 가장 일반적인 작업 중 일부입니다. 사용되는 특정 작업과 알고리즘은 문제의 요구 사항과 사용되는 프로그래밍 언어에 따라 달라질 수 있습니다. 대기열은 작업 예약, 프로세스 간 통신 관리 등과 같은 응용 프로그램에서 일반적으로 사용됩니다.
대기열의 실제 응용 프로그램:
- 대기열의 실제 예는 먼저 들어오는 차량이 먼저 나가는 단일 차선 일방통행 도로입니다.
- 보다 실제적인 예는 매표소의 대기열에서 볼 수 있습니다.
- 매장의 계산대 줄도 대기열의 한 예입니다.
- 에스컬레이터를 타는 사람들
대기열을 시작하고 싶으신가요? 모범 사례를 위해 선별된 기사와 목록을 시험해 볼 수 있습니다.
- techcodeview.com의 연습 대기열 문제
나무:
트리는 요소가 트리와 같은 구조로 배열된 비선형 및 계층적 데이터 구조입니다. 트리에서 최상위 노드를 루트 노드라고 합니다. 각 노드에는 일부 데이터가 포함되어 있으며 데이터는 모든 유형이 될 수 있습니다. 중앙 노드, 구조 노드, 가장자리를 통해 연결된 하위 노드로 구성됩니다. 다양한 트리 데이터 구조는 비선형 데이터 구조이므로 데이터에 더 빠르고 쉽게 액세스할 수 있습니다. 트리에는 노드, 루트, 가장자리, 트리 높이, 트리 각도 등과 같은 다양한 용어가 있습니다.
다양한 종류의 트리형이 있습니다

나무
나무의 특성:
나무는 다음과 같은 다양한 특징을 가지고 있습니다.
- 트리는 재귀적 데이터 구조라고도 합니다.
- 트리에서 루트의 높이는 루트 노드에서 리프 노드까지의 가장 긴 경로로 정의될 수 있습니다.
- 트리에서는 상단부터 모든 노드까지의 깊이를 계산할 수도 있습니다. 루트 노드의 깊이는 0입니다.
나무의 응용:
Tree의 다양한 응용 프로그램은 다음과 같습니다.
- 힙은 배열을 사용하여 구현되고 우선순위 큐를 구현하는 데 사용되는 트리 데이터 구조입니다.
- B-Tree 및 B+ Tree는 데이터베이스에서 인덱싱을 구현하는 데 사용됩니다.
- 구문 트리는 컴파일러 설계에서 스캐닝, 구문 분석, 코드 생성 및 산술 표현식 평가에 도움이 됩니다.
- K-D 트리는 K차원 공간에서 점을 구성하는 데 사용되는 공간 분할 트리입니다.
- 스패닝 트리는 컴퓨터 네트워크의 라우터에 사용됩니다.
트리에서 수행되는 작업:
트리는 모서리로 연결된 노드로 구성된 비선형 데이터 구조입니다. 다음은 트리에서 수행되는 몇 가지 일반적인 작업입니다.
- 삽입 : 새 노드를 트리에 추가하여 새 가지를 만들거나 트리 높이를 늘릴 수 있습니다.
- 삭제 : 상위 노드의 참조를 업데이트하여 현재 노드에 대한 참조를 제거함으로써 트리에서 노드를 제거할 수 있습니다.
- 찾다 : 루트 노드부터 시작하여 현재 노드의 값을 기준으로 트리를 순회하여 원하는 노드를 찾을 때까지 트리에서 요소를 검색할 수 있습니다.
- 순회 : 트리의 요소는 순차, 선순, 후순 순회를 비롯한 여러 가지 방법으로 순회할 수 있습니다.
- 키 : 트리의 높이는 루트 노드에서 가장 먼 리프 노드까지의 가장자리 수를 계산하여 결정할 수 있습니다.
- 깊이 : 루트 노드부터 현재 노드까지의 간선 수를 세어 노드의 깊이를 결정할 수 있습니다.
- 밸런싱 : 트리의 높이가 최소화되고 노드의 분포가 최대한 균일하도록 트리의 균형을 맞출 수 있습니다.
다음은 트리에서 수행되는 가장 일반적인 작업 중 일부입니다. 사용되는 특정 작업과 알고리즘은 문제의 요구 사항과 사용되는 프로그래밍 언어에 따라 달라질 수 있습니다. 트리는 계층적 데이터 검색, 정렬, 저장과 같은 응용 프로그램에서 일반적으로 사용됩니다.
나무의 실제 응용:
- 실생활에서 트리 데이터 구조는 게임 개발에 도움이 됩니다.
- 또한 데이터베이스의 인덱싱에도 도움이 됩니다.
- 의사결정 트리는 의사결정 분석에 일반적으로 사용되는 효율적인 기계 학습 도구입니다. 데이터를 이해하는 데 도움이 되는 순서도와 같은 구조를 가지고 있습니다.
- 도메인 이름 서버도 트리 데이터 구조를 사용합니다.
- 트리의 가장 일반적인 사용 사례는 소셜 네트워킹 사이트입니다.
트리를 시작하고 싶으신가요? 모범 사례를 위해 선별된 기사와 목록을 시험해 볼 수 있습니다.
- 상위 50개 트리 인터뷰 질문
- techcodeview.com의 연습 트리 문제
그래프:
그래프는 정점(또는 노드)과 간선으로 구성된 비선형 데이터 구조입니다. 이는 한 쌍의 노드를 연결하는 유한한 정점 집합과 가장자리 집합으로 구성됩니다. 그래프는 가장 까다롭고 복잡한 프로그래밍 문제를 해결하는 데 사용됩니다. 경로, 각도, 인접 정점, 연결된 구성 요소 등 다양한 용어가 있습니다.

그래프
그래프의 특성:
그래프에는 다음과 같은 다양한 특성이 있습니다.
- 정점에서 다른 모든 정점까지의 최대 거리는 해당 정점의 이심률로 간주됩니다.
- 이심률이 가장 작은 정점을 그래프의 중심점으로 간주합니다.
- 모든 정점의 이심률 최소값은 연결된 그래프의 반경으로 간주됩니다.
그래프의 응용:
그래프의 다양한 적용은 다음과 같습니다.
- 그래프는 계산의 흐름을 나타내는 데 사용됩니다.
- 그래프 모델링에 사용됩니다.
- 운영 체제는 자원 할당 그래프를 사용합니다.
- 웹 페이지가 노드를 나타내는 World Wide Web에서도 사용됩니다.
그래프에서 수행되는 작업:
그래프는 노드와 간선으로 구성된 비선형 데이터 구조입니다. 다음은 그래프에서 수행되는 몇 가지 일반적인 작업입니다.
- 정점 추가: 새로운 정점을 그래프에 추가하여 새로운 노드를 나타낼 수 있습니다.
- 가장자리 추가: 정점 사이에 모서리를 추가하여 노드 간의 관계를 나타낼 수 있습니다.
- 정점 제거 : 인접한 정점의 참조를 업데이트하여 현재 정점에 대한 참조를 제거함으로써 그래프에서 정점을 제거할 수 있습니다.
- 가장자리 제거 : 인접 정점의 참조를 업데이트하여 현재 가장자리에 대한 참조를 제거함으로써 가장자리를 제거할 수 있습니다.
- 깊이 우선 검색(DFS) : 깊이 우선 방식으로 정점을 방문하여 깊이 우선 탐색을 사용하여 그래프를 탐색할 수 있습니다.
- 비 읽기 우선 검색(BFS): 너비 우선 방식으로 정점을 방문하여 너비 우선 검색을 사용하여 그래프를 탐색할 수 있습니다.
- 최단 경로: 두 정점 사이의 최단 경로는 Dijkstra 알고리즘이나 A* 알고리즘과 같은 알고리즘을 사용하여 결정할 수 있습니다.
- 연결된 구성 요소 : 그래프의 연결된 구성 요소는 그래프의 다른 정점과 연결되지 않고 서로 연결되어 있는 정점 집합을 찾아 확인할 수 있습니다.
- 사이클 감지 : 깊이 우선 탐색 시 뒤쪽 가장자리를 확인하여 그래프의 순환을 감지할 수 있습니다.
다음은 그래프에서 수행되는 가장 일반적인 작업 중 일부입니다. 사용되는 특정 작업과 알고리즘은 문제의 요구 사항과 사용되는 프로그래밍 언어에 따라 달라질 수 있습니다. 그래프는 컴퓨터 네트워크, 소셜 네트워크, 라우팅 문제와 같은 응용 프로그램에서 일반적으로 사용됩니다.
그래프의 실제 응용:
- 그래프의 가장 일반적인 실제 사례 중 하나는 도시가 정점으로 위치하고 해당 정점을 연결하는 경로가 그래프의 가장자리로 위치하는 Google 지도입니다.
- 소셜 네트워크는 또한 네트워크의 모든 사람이 노드이고 네트워크의 모든 우정이 그래프의 가장자리인 그래프의 실제 사례 중 하나입니다.
- 그래프는 물리학과 화학에서 분자를 연구하는 데에도 사용됩니다.
그래프를 시작하고 싶으신가요? 모범 사례를 위해 선별된 기사와 목록을 시험해 볼 수 있습니다.
자바 스레드 생성
- 그래프 데이터 구조 소개
- 상위 50개 그래프 인터뷰 질문
- techcodeview.com의 연습 그래프 문제
데이터 구조의 장점:
- 데이터 구성 및 스토리지 효율성이 향상되었습니다.
- 더 빠른 데이터 검색 및 조작.
- 복잡한 문제를 해결하기 위한 알고리즘 설계를 촉진합니다.
- 데이터 업데이트 및 유지 관리 작업이 쉬워집니다.
- 데이터 요소 간의 관계에 대한 더 나은 이해를 제공합니다.
데이터 구조의 단점:
- 계산 및 메모리 오버헤드가 증가했습니다.
- 복잡한 데이터 구조를 설계하고 구현하는 데 어려움이 있습니다.
- 확장성과 유연성이 제한되어 있습니다.
- 디버깅 및 테스트의 복잡성.
- 기존 데이터 구조를 수정하는 데 어려움이 있습니다.
참조:
데이터 구조는 다양한 컴퓨터 과학 교과서와 온라인 리소스에서 찾을 수 있습니다. 일부 인기 있는 텍스트는 다음과 같습니다.
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest 및 Clifford Stein의 알고리즘 소개.
- Mark Allen Weiss가 작성한 Java의 데이터 구조 및 알고리즘 분석.
- Steven S. Skiena의 알고리즘 설계 매뉴얼.
- Coursera, Udemy, Khan Academy와 같은 온라인 리소스에서도 데이터 구조 및 알고리즘에 대한 강좌를 제공합니다.
결론
이는 가장 널리 알려지고 사용되는 데이터 구조이지만 컴퓨터 과학에서 사용되는 다른 형태의 데이터 구조도 있습니다. 정책 기반 데이터 구조 등. 그러나 어떤 데이터 구조를 선택하든 각각의 장점과 단점이 있으며, 이에 대한 지식 없이 잘못된 유형의 데이터 구조를 선택하면 비용이 매우 많이 들 수 있습니다. 따라서 상황의 필요성을 이해하고 어떤 종류의 데이터 구조가 해당 작업에 가장 적합한지 결정하는 것이 매우 중요합니다.