⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dijpanel.java

📁 数据结构综合实验,有各种排序算法和计算排序时间,最短路径算法,huffman编码解码.用图形界面实现.在jbuilder2006下运行通过.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
           {
           // adjust values in shortest-path array sPath
           int column = 0;                // skip starting vertex
           while(column < nVerts)         // go across columns
              {
              // if this column's vertex already in tree, skip it
              if( vertexList[column].isInTree )
                 {
                 column++;
                 continue;
                 }
              // calculate distance for one sPath entry
                            // get edge from currentVert to column
              int currentToFringe = adjMat[currentVert][column];
                            // add distance from start
              int startToFringe = startToCurrent + currentToFringe;
                            // get distance of current sPath entry
              int sPathDist = sPath[column].distance;

              // compare distance from start with sPath entry
              if(startToFringe < sPathDist)   // if shorter,
                 {                            // update sPath
                 sPath[column].parentVert = currentVert;
                 sPath[column].distance = startToFringe;
                 }
              column++;
              }  // end while(column < nVerts)
        }  // end adjust_sPath()
// -------------------------------------------------------------
        //displayPaths();                // display sPath[] contents
        public void cleartree(){
        nTree = 0;                     // clear tree
        for(int j=0; j<nVerts; j++)
           vertexList[j].isInTree = false;
         }  // end path()
// -------------------------------------------------------------

      public int getMin()               // get entry from sPath
         {                              //    with minimum distance
         int minDist = INFINITY;        // assume minimum
         int indexMin = 0;
         for(int j=1; j<nVerts; j++)    // for each vertex,
            {                           // if it's in tree and
            if( !vertexList[j].isInTree &&  // smaller than old one
                                  sPath[j].distance < minDist )
               {
               minDist = sPath[j].distance;
               indexMin = j;            // update minimum
               }
            }  // end for
         return indexMin;               // return index of minimum
         }  // end getMin()
     /////////////////////////////////////////////////////////////
     public void add()
     {
       vertexList = new Vertex[MAX_VERTS];
       nVerts = 0;
       nTree = 0;
       adjMat = new int[MAX_VERTS][MAX_VERTS];
       sPath = new DistPar[MAX_VERTS]; // shortest paths

   /*
       addVertex('0');     // 0  (start)
       addVertex('1'); // 1
       addVertex('2'); // 2
       addVertex('3'); // 3
       addVertex('4'); // 4
    */
       for (int i = 0; i < Integer.parseInt(jTextField1.getText()); i++) {
           char ch = String.valueOf(i).charAt(0);
           addVertex(ch);
       }
       for (int i = 0; i < MAX_VERTS; i++) {
           for (int j = 0; j < MAX_VERTS; j++) {
               adjMat[i][j] = tempAdjMat[i][j];
           }
       }


      /* addEdge(0, 1, 5); // AB 5
       addEdge(0, 3, 8); // AD 8
       addEdge(1, 2, 6); // BC 6
       addEdge(1, 3, 9); // BD 9
       addEdge(2, 4, 4); // CE 4
       addEdge(3, 2, 2); // DC 2
       addEdge(3, 4, 7); // DE 7
       addEdge(4, 1, 15); // EB 5*/
  }

    public void jTextField4_actionPerformed(ActionEvent e) {
        int start = Integer.parseInt(jTextField2.getText());
        int end = Integer.parseInt(jTextField3.getText());
        int weight= Integer.parseInt(jTextField4.getText());
        jTextArea4.append(String.valueOf(start)+"-->"+String.valueOf(end)+": "+String.valueOf(weight)+"\t");
        addEdge(start,end,weight);
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
    }

    public void jButton1_actionPerformed(ActionEvent e) {
        for (int i = 0; i < Integer.parseInt(jTextField1.getText()); i++) {
            char ch = String.valueOf(i).charAt(0);
            System.out.println(ch);
            addVertex(ch);
       }

         /*addEdge(0, 1, 5); // AB 5
         addEdge(0, 3, 8); // AD 8
         addEdge(1, 2, 6); // BC 6
         addEdge(1, 3, 9); // BD 9
         addEdge(2, 4, 4); // CE 4
         addEdge(3, 2, 2); // DC 2
         addEdge(3, 4, 7); // DE 7
         addEdge(4, 1, 15); // EB 5*/


        jTextArea3.setText("");
        int t = Integer.valueOf(jTextField1.getText());
        for (int i = 0; i < t; i++) {
            for (int j = 0; j < t; j++) {
                tempAdjMat[i][j] = adjMat[i][j];
                jTextArea3.append(String.valueOf(adjMat[i][j])+"\t");
            }
            jTextArea3.append("\n");
        }
    }

    public void jTextField5_actionPerformed(ActionEvent e) {

    }

    public void jButton2_actionPerformed(ActionEvent e) {
        int node = Integer.parseInt(jTextField5.getText());
        jTextArea1.setText("");
        jTextArea1.append("目的\t下一站\t时间\n");
        add();
        path(node);
        //--------------------------------------------------------------
          for (int j = 0; j < nVerts; j++) { // display contents of sPath[]
            jTextArea1.append(String.valueOf(vertexList[j].label) + "\t");
            char parent = vertexList[sPath[j].parentVert].label;
            jTextArea1.append(String.valueOf(parent) + "\t");
            if (sPath[j].distance == INFINITY)
              jTextArea1.append("inf\t\n");
            else
              jTextArea1.append(String.valueOf(sPath[j].distance) + "\n");
    }
    }

    public void jButton3_actionPerformed(ActionEvent e) {
        char send = jTextField6.getText().charAt(0);
        jTextArea2.setText("");
        char temp = 'q';
        for (int i = 0; i < nVerts; i++) {
          if(sPath[i].distance == INFINITY){
            temp = vertexList[i].label;
          }
        }
        jTextArea2.append(String.valueOf(send) + "<---");
        for (int i = 0; i <nVerts; i++) {
          if((vertexList[i].label) ==  send)
          {
            send = vertexList[ sPath[i].parentVert].label;
            jTextArea2.append(send + "<---");
            i = 0;
            if(send == temp)
              {//jTextArea1.append(String.valueOf(temp));
              break;}
          }
        }
    cleartree();
    }
}


class DijPanel_jButton3_actionAdapter implements ActionListener {
    private DijPanel adaptee;
    DijPanel_jButton3_actionAdapter(DijPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton3_actionPerformed(e);
    }
}


class DijPanel_jButton2_actionAdapter implements ActionListener {
    private DijPanel adaptee;
    DijPanel_jButton2_actionAdapter(DijPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton2_actionPerformed(e);
    }
}


class DijPanel_jTextField5_actionAdapter implements ActionListener {
    private DijPanel adaptee;
    DijPanel_jTextField5_actionAdapter(DijPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jTextField5_actionPerformed(e);
    }
}


class DijPanel_jButton1_actionAdapter implements ActionListener {
    private DijPanel adaptee;
    DijPanel_jButton1_actionAdapter(DijPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jButton1_actionPerformed(e);
    }
}


class DijPanel_jTextField4_actionAdapter implements ActionListener {
    private DijPanel adaptee;
    DijPanel_jTextField4_actionAdapter(DijPanel adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.jTextField4_actionPerformed(e);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -