2011-09-10 10 views
2

여기에 문제가 있습니다.반복자 인터페이스를 사용하여 연결된 목록 구현

여러 개의 (정렬 된) 연결 목록을 하나의 정렬 된 연결 목록으로 병합하는 함수를 작성하십시오. 이 함수는 Iterator 인터페이스를 통해 요소에 액세스해야합니다 (연결된 목록을 통해 요소에 직접 액세스하지 마십시오). 병합 프로 시저에 대한 인수는 반복자 및 배열 크기입니다. 반환 값은 List 구현이있는 또 다른 Iterator 여야합니다.

단계 :

(1) 반복 목록을 사용하여 연결된 목록을 구현합니다.) (

typedef struct 
{ 
int idno; 
char name[25]; 
float marks; 
} Element; 

의 (a) 목록 createList; 아래 목록의 요소를 정의

(b) 목록 삽입 (목록 L, 요소 e);

(c) Void printList (List L);

(d) iterator initIterator (List L);

(e) 부울 hasMoreElements (반복자 I);

(f) 반복자 moveNext (반복자 I);

(2) 병합 기능을 구현하십시오.

iterator merge(iterator I[],int size) 

이 기능은 속성 "마크"로 주문한 모든 목록의 요소를 병합합니다. Merge 함수는 iterator 함수를 통해 목록에 액세스해야합니다.

(3) 드라이버 기능을 구현하십시오.

입력 파일에서 목록을 채 웁니다 (지원으로 제공됨). 병합 함수를 호출하고 결과 병합 된 목록의 데이터를 출력 파일에 저장합니다.

지원 파일 :있는 test1.txt, test2.txt가, test3.txt, test4.txt, test5.txt, test6.txt, test7.txt, test8.txt

결과물 : dataDef.h, mergeOps. c, mergeOps.h, main.c, output.txt

이제 해결책은 없지만 반복자 인터페이스가 무엇인지 알고 싶습니다. 전에 들어 본 적이 없습니다.

그리고 반복자 인터페이스로 링크 된 목록을 구현하는 방법은 무엇입니까? 그것은 무엇을 의미합니까?

또한 iterator의 데이터 유형을 사용합니다.

+1

음, 확실할까요? 'c'입니까? –

+0

@Brian Roach 전 꽤 많이 .. 질문의 나머지도 게시 할 수 있습니다 .. – Kraken

+0

'Iterator'는 사용자 정의 구조입니다. MSDN의 C++에서 이에 상응하는 내용을 볼 수 있습니다 - [iterator 구조체] (http :// /msdn.microsoft.com/ko-kr/library/x9be4t1b.aspx). –

답변

4

반복자는 컨테이너 (예 : 배열, 목록 등)를 탐색 할 수있는 일반 용어입니다.wikipedia 가입일

컴퓨터 프로그래밍

는 반복자는 컨테이너를 통과하도록 프로그래머 있도록하는 것을 목적으로한다. 다양한 유형의 반복자는 종종 컨테이너 인터페이스를 통해 제공되는 입니다. 주어진 반복자의 인터페이스와 의미가 고정되어 있지만, 반복자는 컨테이너 구현의 기본 구조로 구현되는 경우가 많으며 종종 컨테이너에 단단히 연결되어 반복자의 조작 의미를 활성화합니다. 반복자는 순회를 수행하고 컨테이너의 데이터 요소에 대한 액세스를 제공하지만 반복을 수행하지 않습니다 (즉, 해당 개념을 사용하거나 또는 용어를 사소하게 사용하지 않은 경우). 반복자는 데이터베이스 커서와 동작이 유사합니다. 직접 액세스하지 않고 요소를 반복자를 만드는 방법에 대한 과제 회담으로

, 당신은 반복자에 Iterator Design Pattern

더 자세한 정보를 살펴