ロビーサーバーとネットワークに使われるデータ構造の構築
Download
1 / 14

ロビーサーバーとネットワークに使われるデータ構造の構築 - PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on

ロビーサーバーとネットワークに使われるデータ構造の構築. ノードライブラリとキューの構築. 04a1016   大嶽 優. データ構造論. データ構造とは、使用するデータの形態を定義し、扱う方法という意味 である。 サーバーでは多くのデータが行き来し、管理しなくてはならないので効率的なデータ構造が必要不可欠である。. Node1. Node2. Node3. Node4. Node5. link. link. link. link. 連結リストとノード. ・データが連結されて、鎖のようにつながったものを定義します

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' ロビーサーバーとネットワークに使われるデータ構造の構築' - kendra


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

ロビーサーバーとネットワークに使われるデータ構造の構築ロビーサーバーとネットワークに使われるデータ構造の構築

ノードライブラリとキューの構築

04a1016  大嶽 優


データ構造論ロビーサーバーとネットワークに使われるデータ構造の構築

  • データ構造とは、使用するデータの形態を定義し、扱う方法という意味 である。

  • サーバーでは多くのデータが行き来し、管理しなくてはならないので効率的なデータ構造が必要不可欠である。


Node1ロビーサーバーとネットワークに使われるデータ構造の構築

Node2

Node3

Node4

Node5

link

link

link

link

連結リストとノード

・データが連結されて、鎖のようにつながったものを定義します

・ノードはデータの最小最小単位であり、リンクでつながれているとします。

・メモリ構造ではなくそれぞれに付加されたアドレスによって連結される。


スタックとキューロビーサーバーとネットワークに使われるデータ構造の構築

●スタック

s4

LIFO(last Input First Out)構造

s3

s2

s1

●キュー

s4

FIFO(First Input First Out)構造

s3

s2

s1


ノードライブラリロビーサーバーとネットワークに使われるデータ構造の構築

struct NODE

{

void *data;

int size;

NODE *prv;

NODE *next;

};

date:データの内容

size:データのサイズ、チェックなどに使える

prv:前のノードのポインタ

next:後のノードのポインタ


ノード生成ロビーサーバーとネットワークに使われるデータ構造の構築

ノードにメモリ割り当て

Y

ノードがNULLか

終了

N

ノード初期化

次のノードとリンク

前のノード

ノードリターン


ノードを連結から取り出すロビーサーバーとネットワークに使われるデータ構造の構築

Y

前と次のノードがNULLか?

終了

N

Y

前のノードがNULLか?

N

Prvの次のノードにNextを連結

一番前のノードを検索

NEXTノードが

NULLか?

Y

N

NextのPrvに連結

一番前のノードをリターン


ノードの間にロビーサーバーとネットワークに使われるデータ構造の構築1つのノードを挿入

Y

前のノードが

NULLか?

引数ノードのNEXT,

PrvをNULLに指定

N

次のノードに前のノードの

NEXTを指定

前のノードのNEXTに

引数ノードを指定

Y

次のノードが

NULLか?

N

次のノードのPRVに

引数ノードを指定

引数ノードのNEXTに次のノードを指定

引数ノードのPrvに前のNEXTを指定


キューライブラリロビーサーバーとネットワークに使われるデータ構造の構築

キューの設計

struct QUEUE

{

NODE *head;

NODE *tail;

int count;

};

Head:キューの連結リストの先頭のノードへのポインタ

Tail:末尾のノードへのポインタ

Int:ノードの個数(誤り検出用


キューのリセット関数ロビーサーバーとネットワークに使われるデータ構造の構築

キューがNULLか?

終了

キューカウンタ

>0か?

キューの先頭が

NULLか?

キューカウンタを0に指定

次のノードを先頭ノードの

Nextに指定

先頭ノードリセット

終了

キューカウンタ

<0ならば

先頭ノード解除

キューの先頭をNextに

キューカウンタ=0

キューカウンタ-1

終了

キューの末尾をNULL指定


キューにロビーサーバーとネットワークに使われるデータ構造の構築1つのノードを挿入

キューの末尾と

先頭がNULLか?

キューの末尾のノード検索

キューの末尾がNULL

ではなく、先頭がNULLか?

キューの先頭

ノード検索

ノード生成

ノードが

NULLか?

終了

キューの先頭が

NULLか?

生成されたノードを

先頭に指定

データがあるか?

ノードのデータを

NULLに指定

ノードにデータコピー

キューカウンタ++


キューの最初のノードをピックロビーサーバーとネットワークに使われるデータ構造の構築

キューがNULLか?

終了

ノードの戻り値に

キューの先頭を指定

キューの先頭が

NULLか?

ノードの戻り値は先頭ノード、

キューの先頭は戻り値を指定

ノードの戻り値が

NULLか?

キューの末尾が

ノードの戻り値か?

キューの末尾と先頭を

NULLに指定

キューカウンター1

キューの先頭ノード指定

ノードリターン


動作テストロビーサーバーとネットワークに使われるデータ構造の構築

  • キューから先頭ノードをピックする関数とデータをピックする関数をテストする。

  • 1000000個のデータを格納し、110000個のデータを出力する。

  • 正確性を確かめるためにテキストデータで出力し、確認する。


まとめロビーサーバーとネットワークに使われるデータ構造の構築

  • データ構造は、考えは簡単だが設計するとなると構造化や一般化が非常に難しいことがわかった。

  • ポインタを多用するため、十分なテストを行わないと思いがけないエラーが出てくる可能性がある。

  • 今回のライブラリを生かせるようなデータベースとの連携をする方法も考えたい。


ad