2011-09-10 9 views
2

ここに問題があります。イテレータインターフェイスでリンクリストを実装する

複数の(ソートされた)リンクリストを1つのソートリンクリストにマージする機能を記述します。この 関数は、イテレータインターフェイスを介して要素にアクセスする必要があります(リンクされたリストを介して要素 に直接アクセスしないでください)。マージプロシージャの引数は、 イテレータの配列と配列のサイズです。戻り値は、 のList実装を持つ別のIteratorである必要があります。

手順:

(1)イテレータインターフェイスでリンクリストを実装する。 は、以下のようにリストの要素を定義します。

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

(a)の一覧createList();

(b)リスト挿入(リストL、エレメントe)。

(c)Void printList(List L);

(d)イテレータinitIterator(リストL);

(e)boolean hasMoreElements(イテレータI);

(f)イテレータmoveNext(イテレータI);

(2)マージ機能を実装する。

iterator merge(iterator I[],int size) 

この関数は、属性 「マーク」が注文したすべてのリストの要素をマージします。 Merge関数は反復子関数を介してリストにアクセスする必要があります。

(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

Erm、確かにあなたは 'c'について話していますか? –

+0

@Brian Roach私はかなりです..質問の残りの部分を投稿することもできます。 – Kraken

+0

'Iterator'はカスタム構造体です。MSDNの[C++ +++ iterator Struct](http:// iterator構造体) /msdn.microsoft.com/en-us/library/x9be4t1b.aspx)。 –

答えて

4

イテレータは、単に配列、リストなどのようにコンテナをトラバースできるようにするための一般的な用語です。コンピュータプログラミングにおいて

wikipediaから

、反復子は、容器を横断する プログラマーを可能にするオブジェクトです。さまざまなタイプのイテレータは、多くの場合、コンテナのインタフェースを介して提供されます。与えられたイテレータのインタフェースと のセマンティクスは固定されていますが、反復子はコンテナ 実装の基礎となる構造に関して実装されており、しばしばコンテナに密接に結合されてイテレータの操作セマンティクスを有効にします。 イテレータはトラバーサルを実行し、 のコンテナ内のデータ要素にアクセスできますが、繰り返しは実行されません(つまり、 というコンセプトで大きな自由が取られていない場合や、 という用語を簡単に使用しない場合)。イテレーターは、データベース カーソルと動作上類似しています。直接アクセスせずに要素を反復子の作成についてのあなたの割り当ての話として

、あなたはイテレータ

関連する問題