data-structures 튜토리얼
데이터 구조 시작하기
수색…
비고
이 절에서는 데이터 구조가 무엇인지, 왜 개발자가이를 사용하려고하는지에 대한 개요를 제공합니다.
또한 데이터 구조 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. 데이터 구조에 대한 문서가 새로운 것이므로 관련 주제의 초기 버전을 만들어야 할 수도 있습니다.
데이터 구조 소개
데이터 구조는 정보를 구성하고 저장하는 방법입니다.
"Hello, World!"라고합시다. 문자열은 우리가 정리하고 바이트 주소 지정이 가능한 메모리에 저장해야하는 정보입니다.
각 ASCII 문자에는 7 비트의 저장 공간이 필요합니다. 대부분의 시스템은 각 문자에 대해 8 비트 (1 바이트)를 예약하므로 "Hello, World!" 연속적으로 하나씩 바이트 크기의 개별 메모리 단위로 저장됩니다.
여러 메모리 주소에 걸쳐 있지만 문자열에 대한 단일 참조가 필요하므로 'H'문자열의 첫 번째 문자 주소를 사용합니다. 다른 모든 문자는 'H'의 주소 + 제로 색인 문자를 사용하여 해당 문자의 색인 에서 액세스 할 수 있습니다.
우리는 문자열 "Hello, World!"를 인쇄하려고합니다. 우리는 print 함수에 제공하는 메모리의 주소를 알고 있지만, print 함수는 연속적인 메모리 위치 인쇄를 중단하는 방법을 알고 있습니까? 가장 일반적인 접근법 중 하나는 null 문자 '\ 0'을 문자열에 추가하는 것입니다. print 함수가 널 (NULL) 문자를 만날 때, 문자열의 끝에 도달했음을 알 수 있습니다.
우리는 문자열, 즉 데이터 구조를 구성하고 저장하는 방법을 정의했습니다! 이 매우 간단한 데이터 구조는 문자열을 구성하고 저장하는 한 가지 방법 인 Null 종료 문자 배열입니다.
배열 : 간단한 데이터 구조
배열 데이터 구조는 인접한 메모리 블록에 유사한 객체 (또는 데이터 값)를 저장하는 데 사용됩니다. 배열 데이터 구조는 고정 크기이며,이 배열에 저장할 수있는 데이터 값의 수를 결정합니다.
배열 : C ++ 방식
C ++ 프로그래밍 언어에서는 다음과 같이 정적 배열을 선언 할 수 있습니다.
int arrayName[100];
여기서 우리는 "arrayName"이라는 이름의 배열을 선언했습니다.이 배열은 모두 동일한 유형 인 정수 100 개까지 저장할 수 있습니다.
이제이 데이터 구조의 장단점에 대해 알아 보겠습니다.
- Constant Time, 즉 시간 복잡도가 O (1) 인 Array에 저장된 데이터 값에 액세스 할 수 있습니다. 따라서 i 번째 위치에 저장된 데이터 값에 액세스하려면 시작 위치에서 시작하여 i 번째 위치까지 이동할 필요는 없지만 직접 i 번째 위치로 이동하여 계산 시간을 절약 할 수 있습니다.
- 배열의 중간에 요소를 삽입하는 것은 효율적인 작업이 아닙니다. 배열에서 i 번째 위치에 새 요소를 추가하려고한다고 가정하면 새 요소에 대한 공간을 만들기 위해 (i-th) 및 (i + 1 th) 위치의 모든 요소를 먼저 이동해야합니다. 예 :
1 4 2 0
은 4 개의 요소를 가진 배열입니다. 이제 3을 2 번째 위치에 삽입하고 싶습니다. 3, 4, 0을 한 칸 더 이동하여 3을위한 공간을 만들어야합니다.
1 3 4 2 0
- 요소를 삽입하는 것과 마찬가지로 배열의 i 번째 위치에서 요소를 삭제하는 것은 효율적이지 않습니다. 삭제 된 요소보다 앞에있는 모든 요소를 1 블록 씩 이동하여 삭제 된 공간에서 채운 빈 공간을 채울 필요가 있기 때문입니다. 요소.
이것들은 배열의 3 가지 간단한 특성입니다. 여기서는 배열이 효율적인 데이터 구조는 아니라고 생각할 수 있습니다. 그러나 실제로 배열의 장점은 장점을 초과 할 수 있습니다. 이는 주로 제공하고자하는 목적에 따라 달라지며, 요소에 대한 액세스를 원하는만큼 자주 삽입하거나 삭제하지 않을 수도 있습니다.이 경우 배열은 절대적으로 완벽한 데이터 구조입니다.
이 데이터 구조를 도입하는 유일한 목적은 장점과 단점의 수를 기반으로 데이터 구조를 선택하지 않도록하는 것이지만 문제를 염두에두고 데이터 구조의 중요성을 분석해야합니다. 예를 들어, 데이터 값을 삽입하거나 삭제하는 것과 비교하여 데이터 값에 액세스하는 데 많은 시간을 소비하게 될 경우 불리한 점보다 더 많은 이점을 제공해야합니다.