2014-09-21 1 views
1

링크 된 목록의 방향을 확인하는 방법 :내가 왼쪽 그렇게 생각 메신저는 상자 노드가있는 곳이 같은 뭔가 화살표가 링크입니다 자체에 추가 연결리스트 확인해야

tail [] <- [] <- [] <- ... [] head 

하지만 두 번째 노드를 추가 할 때 연결 목록의 방향을 어떻게 결정합니까? 어느쪽에 놓을 지 어떻게 알 수 있습니까?

예를 들어
2nd? 1st 2nd? 
[] [] [] 

이 코드를 : 헤드 = 새로운 IntNode (5, 헤드) 연결리스트는 다음과 같은 경우
오른쪽에 추가합니다 :

  head   tail 
    [] -> [] -> [] -> [] 

을하지만,에 추가 할 때 만입니다 그 형식으로 이미 만들어진 목록, 그래서 그것은 새로운 연결 목록을 만들 때부터 시작됩니까?

+2

에서 그들을 그렸습니다. 전통적으로 부모님이 자녀보다 위에 그려지지만 구조는 동일하면 원하는대로 그릴 수 있습니다. 연결된 목록은 일반적으로 왼쪽에 머리가 있고 오른쪽에 꼬리가 그려져 있습니다. 하지만 대부분의 언어가 왼쪽에서 오른쪽으로 읽혀지기 때문입니다. 그것은 연결된 목록의 본질적인 속성이 아닙니다. –

답변

2

링크 된 목록이있는 leftright은 없습니다.

그 방향은 우리가 쉽게 그림을 그릴 수 있기 때문에 편리한 그래픽 표현에 사용됩니다. 기술적으로 링크 된 목록을 옆으로, 위에서 아래로, 아래에서 위로, 왼쪽에서 오른쪽으로 그릴 수 있습니다.

모든 연결된 목록은에서 한 방향입니다. 또는 이중으로 연결된 목록의 경우 머리에서 꼬리까지 그리고 꼬리에서 머리까지 양방향으로.

기술적으로는 "left" 또는 "prev" 포인터가 null 인 것처럼 이중화 된 목록을 만들 수 있다고 생각합니다. 또는 "right" 또는 "next" 포인터를 모두 null으로 만들고 남은 것처럼 보이게하십시오. 두 경우 모두 그러한 방향은 실제 의미가 없습니다.

"left""right"은 연결된 목록을보다 쉽게 ​​그래픽으로 표시하기 위해 정한 규칙입니다.

메모리에서 연결된 목록 노드의 값인 Node.next은 다음 노드의 메모리 주소를 포함합니다. 그 메모리 위치는 물리적으로 노드 바로 옆에있을 필요는 없습니다. 기술적으로 연결된 목록 포인터는 OS와 기본 시스템이 메모리를 할당하기로 결정한 모든 블록을 연결하여 메모리 전체를 지그재그로 표시 할 수 있습니다. 우리가 실생활에서 사용하는 것처럼에는 "자연"순서가 없다, 꼬리 예를 들어

머리에서 포인터의 단지 순서는,이 두 가지 목록까지 컴퓨터에 관한 한 동일합니다. 난 그냥이 조금 가계도 아래쪽 또는 위쪽으로 이동 여부를 묻는처럼 서로 다른 방향 :

linked lists

+0

Lol yea, 연결된 목록의 방향은 머리와 꼬리 방향에 의해서만 결정되어야합니다. 고마워요. 그것에 대해 더 생각해야합니다. 대답은 내 앞에서와 같습니다. – reifi

+0

@reifi 당신은 환영합니다 :) – nem035