선형 데이터 구조란 무엇입니까? 설명된 데이터 구조 목록
게시 됨: 2021-06-18데이터 구조는 사용자가 효율적으로 사용할 수 있도록 구조화된 데이터입니다. 컴퓨터 프로그램은 데이터에 대한 의존도가 크며 성능을 위해 많은 양의 데이터를 필요로 하기 때문에 데이터의 정리가 매우 중요합니다. 이러한 구조화된 구조의 데이터 배열을 데이터 구조라고 합니다.
데이터 구조에 데이터를 저장하면 데이터 요소에 대해 액세스, 수정 및 기타 작업을 수행할 수 있습니다. 데이터의 배열은 주로 컴퓨터에서 이루어지므로 데이터 구조로 작업을 수행하려면 적절한 알고리즘이 필요합니다. 공간을 줄이고 다른 작업의 시간 복잡성을 줄이는 것이 데이터 구조의 주요 목표입니다.
데이터 구조에서 가장 중요한 점은 다음과 같습니다.
- 많은 양의 데이터가 모든 유형의 데이터 구조를 통해 구성됩니다.
- 모든 데이터 구조에는 특정 원칙이 따릅니다.
- 데이터 구조에 대해 연산을 수행하더라도 데이터 구조의 기본 원칙을 따라야 합니다.
데이터 구조 내의 데이터 배열은 다른 순서를 따를 수 있습니다. 따라서 데이터 구조는 데이터의 배열 방식에 따라 분류됩니다. 기본적으로 두 가지 유형의 데이터 구조 가 있습니다.
- 기본 데이터 구조
- 기본이 아닌 데이터 구조
데이터 구조의 기본 유형에는 char, float, int 및 double과 같은 미리 정의된 데이터 구조가 포함됩니다.
기본이 아닌 데이터 구조는 요소 컬렉션을 저장하는 데 사용됩니다. 이 데이터 구조는 다음과 같이 더 분류할 수 있습니다.
- 선형 데이터 구조
- 비선형 데이터 구조.
읽기: 선형 및 비선형 데이터 구조의 차이점 알아보기
이 기사에서는 주로 데이터를 선형으로 저장하는 데이터 구조에 대해 논의할 것입니다.
목차
선형 데이터 구조
데이터 배열이 선형 추세를 따르는 데이터 구조 유형입니다. 데이터 요소는 요소가 이전 및 다음 요소에 직접 연결되도록 선형으로 배열됩니다. 요소가 선형으로 저장되기 때문에 구조는 데이터의 단일 수준 저장을 지원합니다. 따라서 데이터 순회는 단일 실행을 통해서만 달성됩니다.
형질
- 데이터가 선형 순서로 저장되고 관리되는 데이터 구조 유형입니다.
- 시퀀스의 데이터 요소는 차례로 연결됩니다.
- 데이터의 선형 구조를 컴퓨터 메모리에 구현하는 것은 데이터가 순차적으로 구성되기 때문에 쉽습니다.
- 배열, 큐. 스택, 연결 목록 등이 이러한 유형의 구조의 예입니다.
- 데이터 구조에 저장된 데이터 요소에는 하나의 관계만 있습니다.
- 데이터 요소가 단일 수준에 저장되므로 데이터 요소의 순회를 단일 실행으로 수행할 수 있습니다.
- 데이터를 선형으로 저장하는 구조를 구현하면 컴퓨터 메모리의 활용도가 떨어진다.
- 데이터 구조의 크기가 증가함에 따라 구조의 시간 복잡도가 증가합니다.
따라서 이러한 구조는 요소가 순차적으로 저장되고 다음과 같은 순서를 따르는 데이터 구조 유형으로 요약될 수 있습니다.
- 다음 요소 가 하나 있는 첫 번째 요소 가 하나만 있습니다.
- 이전 요소가 하나 있는 마지막 요소 가 하나만 있습니다 .
- 데이터 구조의 다른 모든 요소에는 이전 요소 와 다음 요소 가 있습니다.
선형 데이터 구조의 데이터 구조 목록
1. 배열
배열은 연속적인 메모리 위치에 동종 요소를 저장하는 구조 유형입니다. 동일한 유형의 객체가 배열에 순차적으로 저장됩니다. 배열의 주요 아이디어는 동일한 유형의 여러 데이터를 함께 저장할 수 있다는 것입니다. 배열에 데이터를 저장하기 전에 배열의 크기를 정의해야 합니다. 배열의 모든 요소에 액세스하거나 수정할 수 있으며 저장된 요소는 해당 위치를 식별하기 위해 인덱싱됩니다.
배열은 클래스의 모든 학생에 대한 점수를 저장하는 간단한 예를 통해 설명할 수 있습니다. 20명의 학생이 있다고 가정하고 배열의 크기는 20으로 언급되어야 합니다. 그러면 모든 학생의 점수는 모든 학생의 점수에 대해 별도의 변수를 만들 필요 없이 생성된 배열에 저장할 수 있습니다. 배열을 단순 순회하면 요소에 액세스할 수 있습니다.
2. 연결 리스트
연결 목록은 별도의 개체가 순차적으로 저장되는 데이터 구조 유형입니다. 데이터 구조에 저장된 모든 개체에는 데이터와 다음 개체에 대한 참조가 있습니다. 연결 목록의 마지막 노드에는 null에 대한 참조가 있습니다. 연결 목록의 첫 번째 요소를 목록의 머리라고 합니다. 연결 목록과 다른 유형의 데이터 구조 사이에는 많은 차이점이 있습니다 . 이것들은 메모리 할당, 데이터 구조의 내부 구조, 연결 목록에서 수행되는 작업과 관련이 있습니다.
배열의 인덱싱이 요소를 찾는 데 도움이 되므로 연결 목록의 요소에 도달하는 것은 배열에 비해 느린 프로세스입니다. 그러나 연결 목록의 경우 프로세스는 헤드에서 시작하여 원하는 요소에 도달할 때까지 전체 구조를 통과해야 합니다. 이에 반해 연결 리스트를 사용하는 장점은 초반에 요소를 추가하거나 삭제하는 작업을 매우 빠르게 할 수 있다는 점이다.
연결 목록에는 세 가지 유형이 있습니다.
- 단일 연결 목록: 이 유형의 구조에는 현재 노드에 저장된 다음 노드의 주소 또는 참조가 있습니다. 따라서 마지막에 주소와 참조가 NULL인 노드입니다. 예: A->B->C->D->E->NULL.
- 이중 연결 목록 : 이름에서 알 수 있듯이 각 노드에는 두 개의 참조가 연결되어 있습니다. 하나의 참조는 이전 노드를 가리키고 두 번째 참조는 다음 노드를 가리킵니다. 이전 노드에 대한 참조를 사용할 수 있으므로 양방향으로 순회가 가능합니다. 또한 삭제를 위해 명시적 액세스가 필요하지 않습니다. 예: NULL<-A<->B<->C<->D<->E->NULL.
- 원형 연결 리스트: 원형 연결 리스트의 노드는 원을 이루는 방식으로 연결됩니다. 연결 리스트는 순환형이므로 끝이 없고 따라서 NULL도 없습니다. 이러한 유형의 연결 목록은 단일 또는 이중 구조를 모두 따를 수 있습니다. 특정 시작 노드가 없으며 데이터의 모든 노드가 시작 노드가 될 수 있습니다. 마지막 노드의 참조는 첫 번째 노드를 가리킵니다. 예: A->B->C->D->E.
연결 목록의 속성은 다음과 같습니다.
- 액세스 시간: O(n)
- 검색 시간: O(n)
- 요소 추가: O(1)
- 요소 삭제 : O(1)
3. 스택
스택은 데이터 구조에 저장된 요소가 LIFO(후입 선출) 또는 FILO(선입 선출)의 규칙을 따르는 또 다른 유형의 구조입니다. 두 가지 유형의 작업이 스택과 연관됩니다(예: 푸시 및 팝). 컬렉션에 요소를 추가해야 할 때 푸시를 사용하고 컬렉션에서 마지막 요소를 제거해야 할 때 팝을 사용합니다. 마지막으로 추가된 요소에 대해서만 추출을 수행할 수 있습니다.
스택의 속성은 다음과 같습니다.
- 요소 추가: O(1)
- 요소 삭제: O(1)
- 액세스 시간: O(n) [최악의 경우]
- 한쪽 끝에서만 요소를 삽입하고 삭제할 수 있습니다.
스택의 예에는 재귀 제거가 포함됩니다. 단어를 반대로 해야 하는 시나리오 또는 편집기를 사용하는 동안 마지막으로 입력한 단어가 먼저 제거될 때(실행 취소 작업 사용) 스택이 사용됩니다. 흥미로운 데이터 구조 프로젝트를 시도하고 싶다면 클릭하여 이 기사를 읽으십시오.
4. 대기열
큐는 저장할 요소가 FIFO(선입 선출) 규칙을 따르는 데이터 구조 유형입니다. 요소에 대해 필요한 작업을 수행하기 위해 특정 순서를 따릅니다. 스택과 큐의 차이점은 가장 최근에 추가된 객체가 스택에서 먼저 제거되는 요소 제거에 있습니다. 반면 큐의 경우 먼저 추가된 요소가 먼저 제거됩니다.
데이터 구조의 양쪽 끝은 데이터 삽입 및 제거에 사용됩니다. 대기열 구조를 제어하는 두 가지 주요 작업은 대기열에 넣기와 대기열에서 빼는 것입니다. Enqueue는 데이터 수집에 요소 삽입이 허용되는 프로세스를 의미하고 dequeue는 요소 제거가 허용되는 프로세스를 의미하며 이 경우 큐의 첫 번째 요소입니다.
대기열의 속성은 다음과 같습니다.
- 요소 삽입: O(1)
- 요소 삭제: O(1)
- 액세스 시간: O(n)
큐의 예: 버스나 아무데서나 기다리면서 만들어진 큐와 유사하게 데이터 구조도 같은 패턴을 따릅니다. 우리는 버스를 기다리며 가장 먼저 서 있는 사람이 가장 먼저 줄을 서 있는 사람으로 상상할 수 있습니다. 이 사람은 버스를 타는 첫 번째 사람이 될 것입니다. 즉, 대기열에서 나옵니다. 대기열은 여러 사용자가 동일한 리소스를 공유할 때 적용되며 서버에서 누가 먼저 왔는지에 따라 제공되어야 합니다.
결론
데이터 크기의 증가는 컴퓨터 프로그램에서 데이터 구조의 효율적인 사용을 필요로 했습니다. 데이터가 구조화된 방식으로 구성되지 않으면 요소에 대한 작업 수행이 어려워집니다.
번거롭지 않은 작업을 위해서는 항상 컴퓨터 프로그램으로 쉽고 효과적인 작업을 수행할 수 있도록 구성하는 것이 중요합니다. 데이터 요소가 순차적으로 구성되면 선형 데이터 구조 로 알려져 있고 데이터 요소가 비선형 방식으로 배열되면 비선형 구조라고 합니다.
기계 학습 언어, 실생활 문제 등에서 데이터 구조의 광범위한 적용이 관찰되었습니다. 이 분야에서 일하기를 꿈꾸는 사람들은 이러한 개념을 마스터할 수 있어야 합니다.
더 자세히 알아보려면 성공적인 데이터 과학자로 전환할 수 있는 플랫폼을 제공하는 데이터 과학의 upGrad Executive PG 프로그램을 확인하십시오. 모든 중간 수준 전문가를 위해 설계된 데이터 과학 과정은 성공에 필요한 모든 이론 및 실제 지식을 제공합니다. 클릭 한 번이면 성공할 수 있는데 왜 다른 옵션을 기다리세요. 도움이 필요한 경우 기꺼이 도와드리겠습니다.
다음은 선형 및 비선형 데이터 구조 간의 중요한 차이점을 보여줍니다. 다음 사항은 연결 목록이 배열보다 훨씬 더 효율적인 방법을 자세히 설명합니다. 모든 선형 데이터 구조에서 수행할 수 있는 일반적인 가능한 작업에는 탐색, 삽입, 삭제, 수정, 검색 작업 및 정렬 작업이 포함됩니다.선형 및 비선형 데이터 구조의 차이점은 무엇입니까?
선형 데이터 구조 -
1. 선형 데이터 구조에서 각 요소는 다음 요소와 이전 요소를 참조하여 서로 선형으로 연결됩니다.
2. 단일 레벨만 관련되기 때문에 구현이 매우 쉽습니다.
3. 메모리 낭비는 선형 데이터 구조에서 훨씬 더 일반적입니다.
4. 스택, 큐, 배열 및 연결 목록은 모두 선형 데이터 구조의 예입니다.
비선형 데이터 구조 -
1. 비선형 데이터 구조에서 요소는 계층적으로 연결됩니다.
2. 여러 수준이 관련되어 있으므로 구현이 훨씬 더 복잡합니다.
3. 메모리가 현명하게 소비되고 메모리 낭비가 거의 없습니다.
4. 그래프와 트리는 비선형 데이터 구조의 예입니다. 연결 목록이 배열보다 어떤 면에서 더 효율적입니까?
ㅏ. 동적 메모리 할당
연결 리스트의 메모리는 동적으로 위치하므로 크기를 초기화할 필요가 없으며 외부 조작 없이 언제든지 확장 및 축소가 가능합니다.
반면에 배열은 정적으로 할당되며 크기를 초기화해야 합니다. 한 번 생성된 크기는 변경할 수 없습니다.
비. 삽입 및 삭제
연결 리스트는 동적으로 생성되기 때문에 삽입, 삭제와 같은 작업이 훨씬 더 편리합니다.
c . 메모리 낭비 없음
모든 요소가 동적으로 삽입되므로 연결 목록에서 메모리 낭비가 없습니다. 요소를 삭제한 후 메모리를 해제할 수 있습니다. 선형 데이터 구조에서 수행되는 가장 일반적인 작업은 무엇입니까?
이러한 작업은 다른 데이터 구조에서 다른 이름으로 인식됩니다. 예를 들어 삽입 및 삭제 작업은 스택에서 푸시 및 팝 작업으로 알려져 있는 반면 큐에서는 대기열에 넣기 및 대기열에서 빼기 작업이라고 합니다.
데이터 구조가 비어 있는지 여부를 확인하기 위해 병합 및 비어 있는 작업과 같은 다른 작업이 있을 수 있습니다.