2010-12-20 11 views
0
struct node 
{ 
    void *data; 
    struct node *link;  
}; 

このような構造が与えられた場合、これを汎用リンクリストと呼びます。そのようなリストは、そのリアルタイムアプリケーションの使用の観点から使用されます。ジェネリックリストの使用

+4

http://en.wikipedia.org/wiki/Linked_list – Kricket

+0

を試してみてください。あなたの質問を改革して、「あなたは何を意味するのか理解してください。リアルタイムアプリケーションの使用 "?ありがとう。 –

答えて

1

複数のアプリケーションからの要求を受け入れ、それぞれにハンドルを提供するサービスがあります。このサービスは、リンクされたリスト内の要求ごとのコンテキストを維持することができ、それらのノードにサービスを提供することによって、ノードをリストから削除することができます。その場合の空のリンクリストは、アプリケーションがサービスに登録されていないことを意味します。

例えば、サービスはSIP stackを超えて構築され、IM,Presence informationなどの複数のアプリケーションは、シグナリングにSIPスタックを使用するサービスに登録することができます。これで、サービスはリンクされたリストにある各アプリケーションに関連するデータを維持します(設計の問題ですが、5つのアプリケーションを処理するには限界があると想定できます)。 SIP応答は、要求を送信するアプリケーションにリダイレクトされ、コールバックポインターをノードの1つの値として保持すると、レスポンスの対応するノードを見つけたら呼び出すことが簡単です。

各ノードは、すべてのアプリケーションに関する多くの情報を保存し、それをアプリケーションに返信するために使用します。

おそらくthisを見てみたいです。

2

これは一般的なことで、いくつかの(テスト済みで信頼できる)ライブラリコードを作成して再利用することができます。

もちろん、このようにタイプセーフではないので、C++は(他のものの中でも)一般的なテンプレートクラスを導入しました。

リンクリスト自体を使用する場合は、さまざまな種類の類似オブジェクトを格納および取得する場所でリンクリストを使用します。通常、オブジェクトの数は事前にわかっておらず、保存した順序でオブジェクトを取得しても問題ありません。リンクされたリストからオブジェクトを削除することも非常に効率的です(リストのエントリへのポインタがあれば)。

1

何をあなたが持っているすべてのために、その唯一の良い、その定義とリストの先頭へのポインタである場合は、そのリアルタイムアプリケーションの観点からこのようなリストの使用は

を使用していますオブジェクトの任意のスタックを作成します。これは、リストの先頭にオブジェクトを追加したり削除したりすること以外は何もしないためです。リストの先頭にオブジェクトを反復処理する必要があります。このような限定された「効率」であっても、そのようなリストはその用途を有する。 mallocを避けるためにリサイクルしようとしている未使用のヒープオブジェクトのキャッシュとして使用します。

リストの末尾にポインタを置いている場合、オブジェクトをO(1)のどちらかの末尾に追加できます。つまり、キューとして使用できます。

各アイテムに前任者と後継者へのポインターがある場合は、O(1)時間内にリスト内の任意のポイントからアイテムを挿入/削除することもできます。もちろん、リニアスキャンが必要なオブジェクトを見つける必要があります。