배열과 목록의 차이점은 무엇입니까?배열과 목록의 차이점
답변
C에서 배열은 여러 개체를 차례로 포함하는 고정 된 크기의 연속 저장 영역입니다. 이 배열은 C가 단어에주는 의미의 "객체"입니다. 기본적으로 뭔가를 나타내는 메모리입니다. 개체는 단지 int
일 수 있습니다.
배열 개체과 배열 사이를 약간 구별 할 수 있습니다. 종종 사람들은 배열 을 사용하여 malloc
으로 할당되고 첫 번째 요소에 대한 포인터를 통해 사용됩니다. 그러나 C는 다른 크기의 배열과 가변 길이 배열에 대해서도 특정 유형을 가지고 있습니다.이 배열은 크기를 만들 때 설정됩니다. VLA는 다소 오도 된 이름을 가지고 있습니다 : 컴파일 타임에 고정되지 않는다는 의미에서 크기는 "가변적"입니다. 그것은 개체의 수명 동안 변경할 수 없습니다.
배열이 고정 크기라는 것은 배열이 만들어지면 크기를 변경할 수 없다는 것을 의미하며 여기에는 VLA가 포함됩니다.realloc
은 논리적으로 이전 배열을 대체하는 새 배열에 대한 포인터를 반환하지만 전달 된 동일한 주소를 반환 할 수 있으며 배열의 크기를 변경합니다. realloc
은 일반적으로 배열이 아닌 메모리 할당에서 작동합니다.
그게 배열입니다. C 프로그래밍 언어는 목록이라고하는 것을 정의하지 않습니다. 잘 정의 된 것을 비교할 수 없습니다 ;-) 일반적으로 "list"는 linked list을 의미하지만 일부 컨텍스트 또는 다른 언어에서는 다른 것을 의미합니다.
다른 언어에서 "배열"은 다른 것을 의미 할 수 있지만, C 배열과 매우 다른 것을 의미하는 언어를 즉시 생각할 수는 없습니다.
귀하의 질문에 정말 C와는 아무 상관이 없으며, 언어에 독립적 데이터 구조 질문, "? 배열과 연결리스트의 차이점은 무엇입니까"이 경우
는, 다음이의 중복입니다 :설명에 감사드립니다 ......... –
"[배열]은 C 배열과 다른 것을 의미하는 언어를 즉시 생각할 수 없습니다." PHP의 "배열"데이터 구조를보십시오. 그것은 내가 생각할 수있는 가장 다른 것입니다. – Jules
이C
자체에list
같은 아무것도 없지만 당신이 확실히 연결리스트 구현에 대해 이야기 할 수 있지만.
배열 : 임의 액세스, 크기 미리 정의.
링크 된 목록 : 순차적 액세스, 런타임의 크기.
Python과 같은 다른 언어는 list
과 array
이 내장되어있어 그 의미가 다를 수 있습니다. 아래에서
유용한 코멘트 :
당신은 배열 목록을 추가 할 수 있습니다. 내부적으로 필요로 할 때 두 배로 배열되고 1/4 만 채워지면 배열을 반으로 줄이는 배열입니다. 이것은 add, remove, get (index) 상환에 O (1)을 준다. - lasseespeholt
파이썬의 list
은 링크 된 목록이 아닙니다. 그리고 파이썬 list
과 array
사이의 구별은 list
은 아무것도 저장할 수 있지만 배열은 기본 유형 (int
, float
등) 만 저장할 수 있습니다. - KennyTM
파이썬의'list'는 링크리스트가 아닙니다. 그리고 파이썬'list'와'array'의 구분은 무엇이든 저장할 수 있지만'array'는 원시 타입 (int, float 등) 만 저장할 수 있습니다. – kennytm
배열 목록을 추가 할 수 있습니다. 내부적으로 필요로 할 때 두 배로 배열되고 1/4 만 채워지면 배열을 반으로 줄이는 배열입니다. 이것은 add, remove, get (index) 상환에 O (1)을 준다. –
파이썬의 "목록"은 사실 다른 언어가 (동적 크기의) 배열이라고 부르는 언어입니다. – delnan
C에는 표준 목록과 같은 것이 없습니다. C++에는 double-linked list으로 구현되는 것이 있습니다.
주요 차이점
배열이 랜덤 액세스을 가지고있다 -는O(1)
시간에 어레이의 모든 멤버에 액세스 (즉
a
배열,
a[4]
경우) 및 컴파일 시간에 미리 설정된 크기를 가진다. 연결된 목록에 순차적 인 액세스 권한이 있습니다. 요소에 액세스하려면 원하는 요소에 도달 할 때까지 목록을 반복해야합니다 (예 :
b
이 연결된 목록 인 경우
b
의 다섯 번째 요소로 이동하려면 요소를 반복해야합니다. 0, 1, 2, 3 및 4), 크기를 동적으로 늘리거나 줄일 수 있습니다.
종종 링크 된 데이터 구조의 특성으로 인해 요소간에 연속적인 메모리 보증이 없기 때문에 메모리가 매우 조각난 상황에서 사용할 수 있습니다. 예를 들어 100MB의 여유 공간이 있지만 최대 사용 가능한 메모리의 길이는 10MB입니다. 이 경우 크기가 10MB이지만 잠재적으로 더 큰 링크 된 목록을 만들 수 있습니다. 단일 노드를 포함 할 수있을만큼 충분한 여유 메모리를 사용할 수 있기 때문입니다.
배열, 그것은 우리가 쓰기와 같은 고정 된 크기를 가지고, 새로운 INT [100] 하지만 목록 고정 된 크기를 가지고 있지 않습니다 ... 그것은에 가서
삽입에 수 및 삭제 배열 이유보다 목록에 쉽게 : 우리는 단순히 삽입 및 링크 된 목록을하지만 배열의 삽입과 삭제 삭제 포인터를 변경하는 데 사용할 수있는 shiftRight 및 shiftLeft이
링크 된 목록에 더미 헤드 노드를 사용 필요가 특별한 경우를 피하십시오. 빈 목록에 삽입하거나 단위 크기 목록에서 마지막 노드를 제거합니다. 두 방향으로 반복 할 수 있도록 이중 링크를 사용합니다. 물론 비용은 더미 노드 (최소 비용)를 유지하는 데 필요한 추가 공간이며 각 노드에 대한 일반적인 다음 링크 (훨씬 더 중요한 비용)에 추가로 이전 링크가 추가됩니다. 배열에서 , 우리는 랜덤 액세스 링크 목록에서
의 도움으로 추가 할 수 있습니다, 꼬리 노드에 대한 참조 (필요없이 우리에게 일정 시간의 목록에 추가 할 수있는 기능을 제공하는, 단순히 header.prev입니다 꼬리 참조를 찾기 위해 반복하거나 별도의 꼬리 참조를 유지해야 함). 그러나 배열에서는 삽입하기 전에 배열의 크기를 조정해야합니다.
배열은 링크 된 목록과 달리 임의 액세스를 얻을 수있는 유연성을 제공합니다. 그것은 우리가 사용하고있는 포인터에 대한 추가 메모리 저장을 소비
링크 된 목록과 같은 문제가있다!대신 O의 O (N)의
시간 복잡도는 (1)과 같은 배열로
반전 이송 단독 연결리스트 어렵다 우리는 이중 연결리스트를 사용하면, 다른 포인터는 추가 메모리 저장
더 의미힙 제한도! 힙에 사용 가능한 공간이있는 경우에만 메모리가 할당됩니다. 메모리가 부족하면 메모리가 생성되지 않습니다.
배열
같은 문제 메모리 낭비 또는 부족의 가능성을 갖는다.
희망이 있습니다. :)
배열은 유사한 데이터 유형 (즉,)을 가지며 본질적으로 동종입니다. 우리는 배열의 정수, 배열 등을 가질 수 있습니다. 배열의 크기 또한 미리 정의됩니다. 의 경우 목록에는 모든 유형의 요소가있을 수 있습니다. 문자열 정수 또는 둘 모두의 조합이되도록하십시오. 또한 null 또는 중복 요소가 목록에 허용됩니다. 목록의 예는 arraylist, linkedlist를 포함합니다. 목록에서 크기는 언제든지 커지거나 줄어들 수 있습니다.
- 1. 바이트 배열과 MemoryStream의 차이점
- 2. 플렉스에서 배열과 배열 콜렉션의 차이점
- 3. 배열과 래핑 된 목록의 차이점은 무엇입니까?
- 4. C++ : 2D 배열과 1D 배열의 차이점
- 5. 두 목록의 차이점 <FileInfo>
- 6. 배열과 배열 포인터를 C에서 함수로 전달할 때의 차이점
- 7. Array와 ArrayCollection의 차이점 (Flex)
- 8. SharePoint 2007 목록의 사용자 지정 NewForm.aspx와 EditForm.aspx의 차이점
- 9. JSON 배열과 JSF
- 10. 배열과 일치하는 패턴
- 11. 배열과 함수의 구조 전달
- 12. 배열과 개체의 차이점은 무엇입니까?
- 13. 배열과 함께 collection_select 사용
- 14. 배열과 객체의 혼합
- 15. 델파이의 동적 배열과 wininet?
- 16. 병합 배열과 단어 빈도
- 17. 텍스처와 버텍스 배열과 OpenGL?
- 18. 분할 배열과 계산은
- 19. 다른 배열과 관련된 배열 정렬
- 20. 문자열 배열과 문자열 매개 변수
- 21. 하나의 배열과 출력의 값을 비교하십시오.
- 22. Perl의 배열과 다른 점은 무엇입니까?
- 23. 배열과 같은 Java 액세스 객체
- 24. 포인터 배열과 참조에 의한 호출
- 25. 배열과 비교 하나 개 배열
- 26. 배열과 포인터를 사용하여 문자열 입력
- 27. 배열과 심볼 인덱스를 동시에 정의하십시오.
- 28. 사전 나는 내부 배열과 사전이
- 29. 배열과 같은 데이터 구조 성능
- 30. $ _GET이 특정 배열과 일치하면 PHP
C에 목록이 있습니까? 연결 목록의 수백 가지 최소 예제 도서 예제를 제외하고 말입니다. – delnan