c언어 linked list 예제

다음은 위의 예제의 전체 소스 코드 링크 된 목록의 제한은 각 노드가 연결된 목록에서 단일 항목을 검색하기 위해 목록의 다음 항목의 주소를 포함해야하기 때문에 배열과 비교할 때 여분의 공간을 소비한다는 것입니다. 그리고 시간이 많이 걸리는 프로세스. NULL 헤드를 확인하여 첫 번째 케이스를 처리합니다. 머리가 NULL이라는 것을 알게 되면 머리를 만든 임시 노드와 동일하게 설정하고 목록의 끝임을 나타내기 위해 NULL에 대한 다음 포인터를 설정합니다. 두 번째 경우(다른 컨트롤 블록)에서는 임시 노드의 다음 포인터를 머리의 현재 위치 앞에 삽입하도록 설정합니다. 그런 다음 새 임시 노드와 동일한 헤드를 설정하여 목록 의 맨 앞에 압착하고 새 노드가 목록의 맨 위에 있습니다. 이제 연결된 목록의 뒷면에 노드를 추가해 보겠습니다. 비어 없는 링크된 목록의 끝에 노드를 추가하려면 두 개의 노드 포인터가 필요합니다. 메모리를 할당하고 데이터를 복사하는 데 하나를 사용하고 목록의 끝에 있으므로 NULL에 대한 다음 포인터로 설정합니다. 다른 포인터는 목록의 끝으로 통과하는 것입니다. 끝에 도달하면 만든 새 노드에 대한 다음 포인터로 설정합니다. 다음은 우리의 높은 점수 예에서 그렇게 할 수있는 기능입니다 : 이전 프로그램에서 링크 된 목록 통과, 우리는 세 개의 노드와 간단한 링크 된 목록을 만들었습니다. 생성된 목록을 탐색하고 각 노드의 데이터를 인쇄해 보겠습니다.

통과의 경우 지정된 목록을 인쇄하는 범용 함수 printList()를 작성해 보겠습니다. 연결된 목록은 각 노드에 하나의 값과 하나의 포인터가 포함된 방식으로 정렬된 동적으로 할당된 노드 집합입니다. 포인터는 항상 목록의 다음 멤버를 가리킵니다. 포인터가 NULL이면 목록의 마지막 노드입니다. 목록에서 특정 항목을 제거하려면 목록의 시작 부분또는 해당 값에 따라 모든 항목을 살펴보고 제거하려는 항목 앞에 노드에 도달했는지 확인하기 위해 지속적으로 앞을 내다보아야 합니다. 이는 이전 노드가 가리키는 위치로 위치를 변경해야 하기 때문입니다. 위의 정의는 목록의 모든 노드를 만드는 데 사용됩니다.