내가 링크 된 목록을 학습 오전이 코드는 단어와 정의를 가지고하는 데 사용됩니다자바 : 링크리스트의 노드 질문
public void add(WordMeaning wm)
{
WordMeaningNode data = new WordMeaningNode(wm);
if (head == null)
head = data;
else
{
WordMeaningNode current = head, prev = null;
boolean found = false;
while (current != null && !found)
{
if (data.getWordMeaning().getWord().compareTo(current.getWordMeaning().getWord()) < 0)
found = true;
else
{
prev = current;
current = current.next;
}
}
data.next = current;
if (prev == null)
head = data;
else
prev.next = data;
}
}
다음 코드를 가로 질러 온 다음 LinkedList의에서 다른 값으로 알파벳 순으로 단어를 정렬 . 사전 순으로 정렬하지 않고 LinkedList에 단어를 저장하는 방법을 알고 있지만 data.next = current 및 그 뒤에 나오는 if 문으로 시작하는 마지막 부분을 이해하는 데 문제가 있습니다. 특히 data.next와 current는 둘 다 null이어야하기 때문에 어떻게 서로 같을 수 있습니다. 나는 또한 마지막 else 문에서 prev.next가 while 루프의 이전 else 문을 기반으로 동일한 값이어야하므로 현재를 대체 할 수없는 이유를 이해하지 못합니다.
_ "데이터를 이해하는 데 어려움이 있습니다 ... 데이터와 다음의 동등성이 어떻게 같습니까?"- 질문이 명확하지 않습니다. 'data.next = current' 문은 _assignment_는'current'의 값을'data.next'에 복사합니다. 그 문장 다음에,'data.next'는'current'가 참조하는 것과 같은 객체를 가리킬 것입니다. 당신이 이해하지 못하는 것은 무엇입니까? –
while 루프에서 일치하는 위치를 찾으면 데이터 노드를 현재 노드 (while 루프에서 찾은 노드)와 이전 노드에 연결해야합니다. 목록이 비어 있으면 요소가 머리에 추가됩니다. 이런 일이 일어나고 있습니다. [이것을 확인하십시오] (http://www.algolist.net/Data_structures/Singly-linked_list/Traversal) – sandy