web-dev-qa-db-ja.com

アルゴリズムフローチャートアプリケーションの設計

ユーザーが以下に示すようなアルゴリズムフローチャートに条件付き/ステートメントブロックを自由に追加できるGUIアプリケーションをC#で開発する必要があります。自由に言うと、ユーザーは矢印がどこにあってもブロックを追加できるということです。

この問題への取り組み方、特にブロックを格納するためのデータ構造に何を選択すべきかについて、ブレインストーミングの問題があります。すべてが線形の方法に従い、すべてのノードには常にヘッドとテールがあるため、LinkedListを考えていましたが、If/Elseブロック(b> a)には2つのブランチ(ヘッド)が格納されているため、少し複雑になります。

賢い人はこのような問題にどのように取り組みますか?この質問がプログラマーのスタック交換に適さない場合は申し訳ありませんが、これは実装の問題ではなく概念上の問題であるため、この場所が質問に適していると考えました。

enter image description here

2
l46kok

グラフのデータ構造を使用します。多くの場合、隣接行列または隣接リストを使用して実装されます。 [〜#〜] msdn [〜#〜] には、かなり確かなチュートリアルがあります。この記事では、前述の両方の構造について説明します。

3
World Engineer

私はJavaでこれに似た何かをしました。

自分でリンクリストを作成しました。アクティビティのリストとコネクタのリストがありました。

Activityクラスには、クラスのキーとして機能する整数が含まれていました。これは0から始まる順次カウンターでした。Activityクラスを拡張して、表す必要のあるさまざまなActivity図形を描画できます。各形状には境界の四角形があるため、コネクタを適切な場所に接続できます。

Connectorクラスには、fromアクティビティとtoアクティビティを表す2つの整数がありました。このように、アクティビティに複数のコネクタがあるかどうかは問題ではありませんでした。

0