프로그래머가 "데이터 구조"에 대해 이야기 할 때, 그들은 무엇을 말하는가?


18

프로그래머가 "데이터 구조"에 대해 이야기 할 때 목록 , 트리 , 해시 , 그래프 등과 같은 추상 데이터 유형 에 대해서만 이야기하고 있습니까?

또는 해당 용어에 복합 유형 (클래스 객체, 구조체, 열거 등) 및 기본 유형 (부울, int, char 등) 과 같이 데이터를 보유하는 구조가 포함 됩니까?

프로그래머가 복잡한 데이터 구조 또는 추상 데이터 형식을 참조하기 위해이 용어를 사용한다고 들었지만, 데이터 구조 목록을 제공하는 Wikipedia 기사 에는 정의에 복합 형식과 기본 형식이 모두 포함되어 있습니다. 의미가 있습니다).

주위를 보면 온라인 I는 다음과 같은 경우에만 추상 데이터 타입을 참조로 프로그래밍 의미에서 용어는 "데이터 구조"를 참조 다른 장소, 참조 컴퓨터 과학의 스토니 브룩 대학의학과에서 강의를 하는 상태

데이터 구조는 특정 추상 데이터 유형의 실제 구현입니다.

또는 데이터 구조에 대한이 위키 북 은 다음과 같은 문장에서 용어를 사용합니다.

데이터 구조는 추상화 수준이 높기 때문에 목록에 항목을 추가하거나 대기열에서 우선 순위가 높은 항목을 찾는 등의 데이터 그룹에 대한 작업을 제공합니다.

그렇다면 왜 "데이터 구조"라는 용어를 사용할 때 복잡한 데이터 구조 나 추상 데이터 형식을 언급하는 프로그래머의 말만 듣습니까? 프로그래머가 사전 정의와 다른 용어 정의를 가지고 있습니까?


1
이 용어는 시간이 지남에 따라 진화했습니다. CS 크라우드는 일반적으로 여러 유형의 관련 데이터 (링크 된 목록, 트리 등)를 보유 할 수있는 일반 유형의 구조에 대해이 용어를 사용합니다.
Oded

1
그것은 단지 용어가 아닌가? 문자열은 실제로 문자의 배열이며 개별 문자의 시퀀스를 나타내는 데이터 구조입니다.
Mithir

3
"데이터 구조"는 자체 정의 된 용어가 아닙니까? 데이터를 저장하기위한 모든 구조입니다! 질문을 진지하게 받아들이 기는 어렵습니다.
Michael K

1
@Rachel 따라서 기본 데이터 유형이 데이터 구조인지 아닌지에 대한 질문이 있습니까? if programmers mean something different when they talk about data structures그래도 여전히 의견을 조사하고 있습니다.
yannis

2
"기본"은 범위에 전적으로 의존합니다. 바이너리 레벨에는 예를 들어 int와 같은 것이 없습니다. 더 낮은 수준에서는 비트가 없으며 전기 바이어스 만 있습니다. 다시 말하지만 이것은 스스로 정의하는 용어입니다. 좋은 질문은 아닙니다.
Michael K

답변:


20

"데이터 구조"의 일반적인 정의는 데이터를 구조화 된 방식으로 보유 할 수있는 것이므로 추상 데이터 유형 외에 복합 유형 및 기본 유형을 포함합니다. 예를 들어, a string는 일련의 문자를 구조화 된 방식으로 보유 할 수 있으므로 데이터 구조입니다.

그러나이 용어는 프로그래머에게 또 다른 의미가 있습니다.

"데이터 구조"라는 용어는 매우 광범위하기 때문에 개발자는 일반적으로보다 구체적인 용어를 사용하여 classor data object또는 or 와 같이 말하는 것을 식별하고 primitive type가장 복잡한 데이터 형식이나 추상적 인 데이터 형식에 사용되는 특정 용어는 "데이터 구조"입니다.

그렇기 때문에 "데이터 구조"가 배열, 목록, 트리 및 해시 테이블과 같은 추상 데이터 형식에 가장 많이 사용되고 기본 데이터 형식과 같은 것은 아닙니다.


4
그래프도 매우 일반적이라고 생각하지만 일반적이고 효율적인 방식으로 작성하기가 매우 어렵 기 때문에 표준 라이브러리에서는 거의 표현되지 않습니다.
Klaim

프로그래머가 "데이터 구조"에 대해 이야기 할 때 보통 추상 데이터 유형 에 대해 이야기하고 있습니까? 그리고 기본 유형 (예 : int, bool 또는 char) 및 복합 유형 (예 : 클래스, 구조체 또는 열거 형)은 여전히 ​​프로그래머가 데이터 구조로 간주하지만 일반적으로 다른 용어로 언급됩니까?
Rachel

1
@Rachel은 기술적으로 데이터 구조는 포인터 / 클래스 등을 사용하여 직접 만든 구현 일 수 있습니다. C ++ 숙제의 일부로 목록과 비슷한 아주 못생긴 "데이터 구조"를 만들었습니다. 우리는 클래스 데이터 구조를 보통 더 구체적이기 때문에 클래스 데이터 구조를 자주 호출하지 않습니다.
벤 Brocka

@BenBrocka Ahhh 따라서 "데이터 구조"는 이러한 다른 개체를 포괄하는 매우 광범위한 용어이지만 일반적으로 데이터 구조에 대해 이야기 할 때보다 구체적으로 설명하고 대신 "기본 데이터 형식"또는 "데이터 개체"와 같은 용어를 사용하는 것이 좋습니다. "데이터 구조". 그리고 객체에 대해 일반적으로 사용되는 특정 용어 좋아 Lists, Trees, Graphs, 등은 수 "데이터 구조"하는 일
레이첼

1
@Rachel 예. 모든 것이 데이터 구조 (엄격히 말해서)이지만 '데이터 구조'라는 용어는 일반적으로 이러한 추상 데이터 형식을 나타냅니다. 개발자의 관점에서 '데이터 구조'라는 용어는 그가 데이터를 저장하는 방법을 말합니다. 메모리 목록에 있거나 디스크에있는 파일이거나 자신이 구현 한 사용자 지정 데이터 구조 일 수 있습니다.
Alex

5

이 용어는 기본 데이터 유형 (또는 기본 데이터 구조) ints과 유사 하고 booleans일반적으로 간주 되지만 둘 다를 의미합니다 . 용어 자체는 단순히 특정 방식으로 데이터를 저장하는 모든 것을 의미합니다. 분명히이 int정의와 해시 테이블과 같은 것을 충족 시키지만 더 간단합니다.

일반적으로 사람들이 데이터 구조를 사용하는 경우 더 복잡한 데이터 구조를 나타내며 단순한 구조는 아니지만 정의를 충족합니다.


2
누군가 int가 "데이터 구조"라고 말하는 것을 들어 본 적이 없다고 생각 합니다.
Qwertie

2
@ Qwertie 나도 그래도 그래도 여전히 그렇습니다. "데이터 유형"이라고하는 경우가 더 많지만 "데이터 구조"와 거의 같은 의미입니다.
Oleksi

0

데이터 구조에 대해 들어 본 가장 단순하고 매우 기본적인 정의는 삽입, 업데이트, 삭제 등과 같은 기본 작업을 시간과 메모리 측면에서 효율적으로 수행 할 수있는 방식으로 데이터를 메모리에 저장하는 것입니다.

따라서 데이터 유형은 저장된 데이터 유형을 나타냅니다. 정수, 10 진수, 문자, 문자열 또는 객체 일 수 있습니다. 추상 데이터 유형 외에 복합 유형 또는 기본 유형일 수 있습니다.

그러나 복잡한 데이터를 메모리에 저장하려는 경우 데이터 구조를 사용합니다. 이것이 배열, 목록, 트리 및 해시 테이블과 같은 데이터 유형에 대해서만 듣고 기본 데이터 유형과 같은 것은 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.