2010-01-05 2 views
-3

필자는 코드에서 필요한 포인터가 많을수록 덜 우아하다는 것을 항상 배웠습니다. 또한 필요한 유일한 데이터 구조는 단독으로 연결된 트리라는 것을 알고 있습니다. 결과적으로, 나는 이중 연결 목록과 이중 연결된 나무 같은 잔인 함을 피하기 위해 항상 최선을 다했습니다.두 배로 연결된 목록과 트리 : 사용하거나 사용하지 않으시겠습니까?

사실인가요? 포인터가 적거나 포인터가 하나만있는 구조가 충분하면 이중 구조로 연결된 구조를 사용하면 코드가 정말 멋지지 않습니까?

EDIT : 이중 연결된 트리를 피하는 영리한 방법이 있습니다.

+4

-1 : * 내가 필요로하는 유일한 데이터 구조는 단독으로 연결된 트리라는 것을 알고 있습니다. * <- 장난입니까? –

+0

이론적으로 그렇습니다. 단독으로 연결된 트리를 사용하여 모든 구조를 작성할 수 있습니다. 그렇다고해서 해커에게 친숙하다는 의미는 아니지만 '해커 친화적 인'것이 '우아한'조건이 아니라고 생각합니다. –

+0

@Mechko :이 글을 쓰는 데 사용하는 OS가 꽤 많은 포인터를 사용한다고 가정합니다! –

답변

5

질문에 의미 론적 결함이 있습니다. 과도한 X이 너무 많습니다. 너무 많은 것은 항상 나쁜 것입니다.

포인터로 수행 할 수있는 작업은 배열을 사용하여 수행 할 수도 있습니다. 그렇다고해서 꼭해야한다는 것은 아닙니다. 목록, 나무, 대기열 : 모두 적절한 문제에 적용하면 우아함을 갖습니다. 포인터가 CS 클래스에서 마지막으로 가장 진보 된 주제 였기 때문에 모든 프로그램에서 포인터를 사용해야한다는 것을 의미하지는 않습니다.

포인터는 프로그래밍 오류의 빈번한 원인이므로 정수 할당도 있습니다. 그렇다고해서 둘 중 하나를 사용하지 말아야한다는 의미는 아닙니다. 그것들을 사용하는 코드를 간단하고 이해하기 쉬운 방식으로 작성하십시오.

+3

마지막으로 가장 진보 된 주제는 무엇입니까? 어떤 CS 과정을 들었습니까? 제가 대학에 입학 한 후 첫 학기 시작 몇 주 동안 포인터에 소개되었습니다. 프로그래밍의 근본적이며 중요한 부분이기 때문입니다. –

+0

우리는 자바의 두 번째 주 (cs 101)에 대한 정보를 얻었습니다. 나는 그들이 항상 근본적이라고 생각했다. –

+0

아마 C가 왜 이륙하지 않았는지를 설명 할 수 있습니다 .... – duffymo

2

우아함은 코드의 레이아웃이 아니라 코드의 기본 기능입니다.

트리 구조 (예 : 유명한 이진 검색 트리, 분리 세트)는 실제로 매우 우아하고 효율적입니다.

4

전체적으로 포인터가 뿌리면 코드가 멋지다고 말할 수 있습니다.

그러나 잘 작성된 데이터 구조는 클라이언트에서 포인터를 사용하고 있다는 사실을 추상화합니다. 귀하의 코드가 포인터로 흩어져 있지 않고 데이터 구조의 API가 최소이지만 아직 완료되지 않은 한, 그것들을 사용하는 것에 대해 아무런 걱정이 없습니다.

사실 나는 "너무 많은 포인터"같은 이유로 데이터 구조를 피하는 사람을 비판합니다. 나는 당신에게 누가 그것을 가르쳤는지 모르지만 나는 그것을 빨리 알아 듣는다. 작업에 적합한 데이터 구조를 사용하고 포인터에 대해 걱정하지 마십시오.

관련 문제