地下鉄の旅の路線計画が実現される。

2992 ワード

地下鉄の旅の路線計画
簡単に述べる
言語:javaプログラミングツール:eclipse符号化フォーマット:utf-8今回の実験関数は隣接行列を通じてtxtファイルを保存して読み込むサイトパス情報を通して、広さを優先して巡回して最短パスを求める。今回の実験関数は検索サイト情報、検索ライン情報を含む。
プログラム本体
1.図面作成
    public int v;
    public LinkedList adj[];
    public Graph(int v){
    this.v = v;
    adj = new LinkedList[v];
        for(int i=0; i();
        }
    }
    public void addEdge(int s,int t) {
        adj[s].add(t);
        adj[t].add(s);
    }
v頂点の無方向図を作成し、addEdgeを使用して隣接マトリックスにエッジを追加します。
2.最短パスアルゴリズム
    int v=graph.getV();
    LinkedList[] adj=graph.getAdj();
    boolean[] visited = new boolean[v];
    visited[s] = true;
    Queue queue = new LinkedList<>();
    queue.add(s);
    int[] prev = new int[v];
    for(int i=0; i
広さ優先アルゴリズムにより最短経路を計算した。
3.初期化
    File file = new File("C:\\Users\\lqz\\Desktop\\    .txt");
    InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
    BufferedReader br = new BufferedReader(reader);
    String line = "";
    line = br.readLine();
    while (line != null) {
        station_name.add(line);
        line = br.readLine();
    }
    File file = new File("C:\\Users\\lqz\\Desktop\\    .txt");
    InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
    BufferedReader br = new BufferedReader(reader);
    String line = "";
    line = br.readLine();
    while (line != null) {
        String[] sArray=line.split("\\|");
        lstation_name.add(sArray[0]);
        lline_name.add(sArray[1]);
        lstation_num.add(sArray[2]);
        }
        line = br.readLine();
    }      
まず、すべてのサイトをリストに保存して、地図を作ったり、調べたりしやすいです。そして、サイト名|線番号|局番号(局の路線番号)に従って経路を保存し、各路線をリストに保存して検索しやすい。
実行結果
1.検索サイト
    searchstation("   ");
リンゴ園:1番線6番線
    searchstation("  ");
アップル:サイトは存在しません。
2.照会回線
    searchline("  ");
大興号線:「公益西橋、新宮、西紅門、高米店北、高米店南、ナツメ園、清源路、黄村西大街、黄村駅、義和庄、生物医薬基地、天宮院」
    searchline(" ");
大きい線:線路は存在しません。
3.クエリのパス
    new BFS().bfs(search("  "),search("  "),graph);
大井->七里荘(乗り換え9番線)->六里橋->六里橋東->北京西駅->軍事博物館->白石橋南(乗り換え6番線)->車公荘西->車公庄(乗り換え2番線)->西直門->積水潭->鼓楼大街->安定門-雍和宮-東直門(乗り換え)
    new BFS().bfs(search("  "),search("  "),graph);
両サイトは同じです
    new BFS().bfs(search("  "),search("100"),graph);
大きな駅は存在しません
締め括りをつける
地下鉄の関数を書く前に、どのようなデータを入力する必要がありますか?よく考えないと、最初の考えとは違ってきます。関数を書く前に大体の案を考えて、問題や問題を解決する方法を考えます。
github:https://github.com/laoqizheng/-