2010-12-31 3 views
5

저는 최근 PHP-SPL 데이터 구조 중 일부를 보았습니다. 첫 번째 부분은 the doubly linked list입니다. 나는 연결 목록이 무엇인지 대략적인 아이디어를 가지고 있으며 이제는 이중 연결 목록이 무엇인지 볼 수 있습니다. 그러나 제 질문은 다음과 같습니다.PHP에서 DoublyLinkedList를 사용하는 이유는 무엇입니까?

나는 배열을 사용하는 것과 같이 쉬운 것처럼 보입니다. 어떤 컴퓨터 과학 유형이 나를 계몽 할 수 있습니까?

+3

나는 회의론에 완전히 동의한다. –

답변

9

단일 링크 된 목록과 달리 이중 연결된 목록은 O (1)의 목록 가운데에서 개체 삽입 및 삭제를 수행 할 수 있습니다 (단, 이미 사용자가 즉, 이중 링크 목록은 다른 방식으로 열등하고 도전적으로 실제로 그 정보를 접할 수있는 것이 아닙니다.

+2

특정 상황 및 알고리즘에 사용됩니다. 배열이 꽤 동적 인 PHP에서는 그다지 중요하지 않습니다. 배열의 크기가 선언시 고정되는 다른 언어에서는 이중 연결되거나 연결되지 않은 연결 목록이 솔루션에 더 적합 할 수 있습니다. 이러한 언어로 배열 크기를 조정하는 데 드는 비용은 연결된 목록의 오버 헤드보다 훨씬 높을 수 있습니다. – RobertB

+0

SPL 구현은 목록의 중간에 삽입을 허용하지 않는 것처럼 보입니다. 그렇다고해도 값을 볼 수는 있지만. – Will

2

IMHO, 당신이 구글이나 페이스 북과 같은 회사에서 일하는 경우가 아니면 미친 양의 데이터를 처리하고 노드 제거와 추가를 허용하기 위해리스트 트래버 설을 최적화하기 위해을 필요로하는 이 있어야만 야생에서 이런 일이 발생하지 않을 것입니다. 엄지 손가락의 규칙으로서, 나는 f 응용 프로그램이 인 경우이 느립니다. 다른 곳에서 뭔가 잘못된 일을하는 경우가 많습니다 (나는 그 질문을 알지 못하지만 그 내용을 던질 것으로 생각합니다)).

중소 규모 데이터 요구 사항이있는 중소 규모 사이트의 경우 어레이가 충분할 것이라고 말하고 싶습니다. (일반 웹 개발자가 더 읽고 이해할 수있는 것은 말할 것도 없습니다.)).

3

적절한 데이터 구조를 선택하는 것이 반드시 쉬운 일은 아니지만 메모리를 적게 사용하고 컴퓨터에서 더 빠릅니다. 이중 연결리스트의 경우 어느 방향 으로든 반복 할 필요가있을 때마다 일정한 속도로 아무 곳이나 삽입해야하지만 임의 액세스가 필요하지 않을 때 유용합니다.

이제는 PHP에서 보통 작은 데이터 세트로 작업하기 때문에 그런 종류의 것에 대해별로 걱정할 필요가 없습니다. 큰 데이터 세트로 작업한다면 C로 코드를 작성하는 것이 더 나을 것입니다. 따라서 PHP에서 이러한 구조로 충분히 이익을 얻지 못할 것입니다.

그러나 Spl 데이터 구조 중 하나를 사용하면 메모리 사용량을 충분히 줄여 사용 가치가있는 "중간"영역이있을 수 있습니다. (나는 간단한 테스트를했고 어레이의 1M 정수는 200MB가 걸렸고 이중 연결 목록은 150MB가 걸렸다. 반복 할 시간은 매우 비슷했다.)

관련 문제