그래서 주변 목록에서 주위를 둘러 보려고하고 목록에있는 각 노드에 "서수"값을 추가하기로했습니다. 이 방법으로, 나는 가치보다는 서수에 의해 삭제할 수 있으며 나중에 다른 멋진 것들을 할 수 있습니다.연결된 목록 서수 재설정
목록에서 요소를 삭제할 때 모든 서수는 뻔뻔 스럽습니다 (즉, 분명함). 그래서 나는 "다른 기능으로 목록을 실행하고 서수의 ". 기술적으로 삭제 된 요소에서이 함수를 시작할 수 있으며 이전 노드를 그대로 유지해야하므로 시간을 절약하기 위해 해당 노드의 서수로 전달할 수 있습니다.하지만 지금은 그렇게 덜 우아하게 설명하고 있습니다.
"귀하의 질문은 무엇입니까?" 네가 그걸 물어볼 줄 알았어! "그걸로 잡아라!" 네가 그렇게 말할 줄 알았어!
여기에 링크하거나 포함 할 수있는 테스트 프로그램은 5 개의 노드 목록을 만들고 3 번째 노드를 제거한 다음 끝에 노드를 추가합니다. 여기에, 그래서 DEBUG: resetting ordinals: 1 2 4 5 5
, 어떤 속히 내 질문 : DEBUG: resetting ordinals: 0 1 2 3 4
실제 출력은 다음과 같습니다
예상 출력은 왜 내 기대와 다른 실제 출력이는?
void ll_fix(node_t* list)
{
node_t* root = list;
int ordinal = 0;
printf("DEBUG: resetting ordinals: ");
while(list->next != NULL)
{
list->ordinal = ordinal;
list = (node_t*)list->next;
printf("%d ",list->ordinal);
ordinal++;
}
printf("%d\n",list->ordinal);
list = root; // rewind the list
}
좋은 지적, 예상 출력 편집 (코드는 복사 붙여 넣기이므로 실제 코드입니다). –