2011-09-10 94 views
2

以下是問題所在。使用迭代器接口實現鏈接列表

編寫一個將多個(排序)鏈接列表合併到一個排序鏈接列表中的函數。這個 函數應該通過Iterator接口訪問元素(不要直接通過鏈表訪問元素 )。合併過程的參數是一個 迭代器和數組大小的數組。返回值應該是另一個具有 基礎List實現的迭代器。

步驟:

(1)實現與迭代器接口鏈表。 定義單元在列表如下:

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

(a)中列表createList(); (b)列表插入(列表L,元素e);(b)列表插入(列表L,元素e); (c)Void printList(L列表); (d)迭代器initIterator(列表L); (e)布爾hasMoreElements(迭代器I);

(f)iterator moveNext(iterator I);

(2)實現合併功能。

iterator merge(iterator I[],int size) 

此功能將合併在由屬性 「標記」下令所有列表中的元素。合併函數應該通過迭代器函數訪問列表。 (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 Struct](http:///msdn.microsoft.com/en-us/library/x9be4t1b.aspx)。 –

回答

4

迭代器只是一個允許遍歷容器(如數組,列表等)的泛化術語。

wikipedia

在計算機編程,迭代器是一個對象,其使得程序員 遍歷的容器。各種類型的迭代器通常是通過容器的接口提供的 。雖然給定迭代器的接口和語義是固定的,但迭代器通常是根據容器實現的結構實現的,並且通常緊密耦合到容器,以啓用迭代器的操作語義。請注意,迭代器執行遍歷,並且還允許訪問容器中的數據元素,但不會執行迭代(即,不是沒有使用該概念的某些重要自由或使用術語的瑣碎使用)。迭代器在行爲上與數據庫遊標相似。

隨着對沒有獲得直接創建一個迭代器中的元素與分配會談,你可以看看Iterator Design Pattern

更多信息迭代