c 언어 linked list 예제

By August 2, 2019Uncategorized

먼저 항상 목록의 첫 번째 노드를 가리키는 머리 포인터를 선언합니다. C++ 및 Java와 달리 C는 제네릭을 지원하지 않습니다. 모든 데이터 형식에 사용할 수 있는 C에서 링크된 목록을 만드는 방법은 무엇입니까? C에서는 void 포인터와 함수 포인터를 사용하여 동일한 기능을 구현할 수 있습니다. void 포인터의 좋은 점은 모든 데이터 형식을 가리키는 데 사용할 수 있다는 것입니다. 또한 모든 유형의 포인터 크기는 항상 동일하므로 연결된 목록 노드를 항상 할당할 수 있습니다. 함수 포인터는 void 포인터가 가리키는 주소에 저장된 실제 콘텐츠를 처리하는 데 필요합니다. 이 작업을 계속 할 수 있지만 실제로 해야 할 일은 다음 변수가 NULL이 될 때까지 목록의 마지막 항목으로 진행하는 것입니다. 그러나 링크된 목록에는 몇 가지 단점이 있습니다: 여기서 -> 노드 p. NULL은 현재 노드 다음에 노드가 없음을 나타내며, 즉 목록의 끝입니다. 연결된 목록에 대한 가장 좋은 사용 사례는 스택과 큐이며, 이제 구현할 것입니다: 연결된 목록은 요소 컬렉션을 저장하는 방법입니다. 배열과 마찬가지로 문자 또는 정수일 수 있습니다. 연결된 목록의 각 요소는 노드 형태로 저장됩니다.

다음 링크를 통해 C 링크된 목록 프로그램을 다운로드할 수 있습니다: C 링크된 목록 (3603 다운로드) 이 자습서에서는 C 링크된 목록과 프레펜드, 추가, 다각, 통과, 개수, 삽입, 제거, 정렬 및 폐기할 수 있습니다. 이 섹션의 C 프로그램은 개수와 같은 작업을 수행하여 길이를 찾고 연결된 목록의 요소를 인쇄합니다. 프로그램은 재귀및 재귀 사용 없이 재귀 를 사용하여 링크 된 목록에서 요소의 발생 수를 계산하고 재귀를 사용하지 않고 재귀를 사용하여 연결된 목록의 길이를 결정하고 재귀를 사용하지 않고 연결된 목록에 대체 노드를 표시합니다. 재귀 및 재귀 사용 없이 머리에 대한 이중 포인터를 수신하고 값 val이 있는 목록의 첫 번째 항목을 제거하는 함수 remove_by_value를 구현해야 합니다. 다음은 제네릭 링크 된 목록의 작업을 보여 주는 샘플 C 코드입니다. 이 섹션에는 인쇄, 역방향 및 읽기 작업을 수행하는 C 프로그램이 포함되어 있습니다. 인쇄 작업은 링크된 목록의 지정된 내용을 인쇄하고, 읽기 작업은 연결된 목록의 내용을 읽고, 작업 제거는 연결된 목록의 특정 내용을 제거하고 역방향 작업은 지정된 링크된 목록의 내용을 반전시바릅니다. 이 섹션의 프로그램은 연결된 목록의 중간 대부분의 노드를 인쇄하고, 링크된 목록을 역으로 읽고, 연결된 목록에서 중복 요소를 제거하고, 지정된 연결된 목록을 반전시키고, 지정된 링크된 목록의 첫 번째 N 요소를 반대로 합니다.

이제 노드를 사용할 수 있습니다. 목록의 첫 번째 항목(head라고 함)을 가리키는 로컬 변수를 만들어 보겠습니다. 이 섹션의 C 프로그램은 연결된 목록에 적용되는 검색 및 표시 기능을 다룹니다.