结对作业4

开始尝试结对作业的基础逻辑,先将地铁线路根据换乘点转化成无向图,准备运用迪杰斯特拉算法完成最小换乘。

int i=0;
        Connection connection = util.getConnection();
        PreparedStatement preparedStatement=null;
        ResultSet rs=null;
        try {

            String sql ="WITH RECURSIVE transfer (start_station, stop_station, stops, path) AS (\n" +
                    "    SELECT station_name, next_station, 1, CAST(CONCAT(line_name,station_name , '->', line_name,next_station) AS CHAR(1000))\n" +
                    "    FROM bj_subway WHERE station_name = ?\n" +
                    "    UNION ALL\n" +
                    "    SELECT p.start_station, e.next_station, stops + 1, CONCAT(p.path, '->', e.line_name, e.next_station)\n" +
                    "    FROM transfer p\n" +
                    "             JOIN bj_subway e\n" +
                    "                  ON p.stop_station = e.station_name AND (INSTR(p.path, e.next_station) = 0)\n" +
                    ")\n" +
                    "SELECT * FROM transfer WHERE stop_station = ?;\n";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,station1);
            preparedStatement.setString(2,station2);
            rs = preparedStatement.executeQuery();

            while(rs.next())
            {
                i++;
                if (station1.equals(rs.getObject(1))&&station2.equals((rs.getObject(2)))){

 

posted @ 2024-05-06 23:20  奶油冰激凌  阅读(10)  评论(0)    收藏  举报