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

📄 fsofgragh.java~29~

📁 图论中关于简单无向图的深度
💻 JAVA~29~
📖 第 1 页 / 共 2 页
字号:
                           if(!autoGenerated){                  graph=new Graph(count+1);                  Edge temp=new Edge();                  for(int i=0;i<vector.size();i++){                      temp=(Edge)vector.elementAt(i);                      graph.addEdge(temp.head,temp.tail,temp.weight);                   }                 }                 DFS(graph);          }          else if(lab.equals("清除")){              resetAll();          }          else if(lab.equals("关于")){              about.setVisible(true);          }          else if(lab.equals("如何使用")){              help.setVisible(true);          }          else if(lab.equals("退出")){                        System.exit(0);          }          if (e.getSource()==btn4){                         //  单步执行程序             Graphics g =getGraphics();             ColorNode tempColorNode=(ColorNode)colorVector.elementAt(num);             int tempseq,tempc,nodeid;             tempseq=tempColorNode.seq;             tempc=tempColorNode.c;             nodeid=searchId(tempseq);             if (tempc==2) {//变为灰色                              g.setColor(Color.gray);                            node[nodeid].fill(g);                    } else if (tempc==3) {//变为黑色                       g.setColor(Color.black);                            node[nodeid].fill(g);          }          /*nodeid=searchId(seq);                                    if (c==2) {//变为灰色                                         g.setColor(Color.gray);                                       node[nodeid].fill(g);                               } else if (c==3) {//变为黑色                                  g.setColor(Color.black);                                       node[nodeid].fill(g);                     }*/             num++;          }      }      private void printResult(Edge[] result,int scale){          Graphics ge = getGraphics();          Clock clock=new Clock();          int start,end;          int i=0;                  info.setText("");          info.append("Processing...\n");          while(i<scale){              start=searchId(result[i].head);              end=searchId(result[i].tail);              ge.setColor(Color.red);              node[start].fill(ge);              node[end].fill(ge);              ge.drawLine(node[start].x+15,node[start].y+15,node[end].x+15,node[end].y+15);                          info.append("Edge "+result[i].head+"->"+result[i].tail+" weight "+result[i].weight+"\n");              ge.setColor(Color.black);              i++;              clock.pause(0.7);          }          info.append("Done!");      }      private void resetAll(){          for(int i=0;i<400;i++){              node[i].setVisible(false);              node[i].setSequence(Integer.MAX_VALUE);          }          count=-1;          drawNode=false;          drawEdge=false;          vector.removeAllElements();          info.setText("");          Graphics g=image.getGraphics();          g.clearRect(0,0,800,630);          num=0;          repaint();      } /*     private Graph createRandomGraph(){          //Random Graph creating with Max Node count 3 to 10 and Edges count 1 to n*(n-1)/2 and Weights between 0 and 20          int node_count=0;          int edge_count=0;          double x;          while(node_count<3||node_count>10){              x=Math.random();              node_count=(int)Math.floor(x*100)+1;          }          info.append("Num_Nodes: "+node_count+"\n");          while(edge_count<1||edge_count>node_count*(node_count-1)/2){              x=Math.random();              edge_count=(int)Math.floor(x*100)+1;          }                  info.append("Num_Edges: "+edge_count+"\n");          int count=0;          int index_x;          int index_y;          int edgeWeight;          Graph graph=new Graph(node_count);          while(count<edge_count){              index_x=randomNumGenenration(node_count-1);              index_y=randomNumGenenration(node_count-1);              edgeWeight=randomNumGenenration(20);             // if(index_x!=index_y&&!graph.haveEdge(index_x,index_y)){             //     graph.addEdge(index_x,index_y,edgeWeight);             //     count++;             // }          }          switch(node_count){              case 3:                  node[49].setVisible(true);                  node[263].setVisible(true);                  node[275].setVisible(true);                  node[49].setSequence(0);                  node[263].setSequence(1);                  node[275].setSequence(2);                  break;              case 4:                  node[63].setVisible(true);                  node[75].setVisible(true);                  node[283].setVisible(true);                  node[295].setVisible(true);                  node[63].setSequence(0);                  node[75].setSequence(1);                  node[283].setSequence(2);                  node[295].setSequence(3);                  break;              case 5:                  node[49].setVisible(true);                  node[143].setVisible(true);                  node[156].setVisible(true);                  node[306].setVisible(true);                  node[313].setVisible(true);                  node[49].setSequence(0);                  node[143].setSequence(1);                  node[156].setSequence(2);                  node[306].setSequence(3);                  node[313].setSequence(4);                  break;              case 6:                  node[49].setVisible(true);                  node[83].setVisible(true);                  node[96].setVisible(true);                  node[303].setVisible(true);                  node[316].setVisible(true);                  node[350].setVisible(true);                  node[49].setSequence(0);                  node[83].setSequence(1);                  node[96].setSequence(2);                  node[303].setSequence(3);                  node[316].setSequence(4);                  node[350].setSequence(5);                  break;              case 7:                  node[49].setVisible(true);                  node[83].setVisible(true);                  node[96].setVisible(true);                  node[303].setVisible(true);                  node[316].setVisible(true);                  node[350].setVisible(true);                  node[189].setVisible(true);                  node[49].setSequence(0);                  node[83].setSequence(1);                  node[96].setSequence(2);                  node[303].setSequence(3);                  node[316].setSequence(4);                  node[350].setSequence(5);                  node[189].setSequence(6);                  break;              case 8:                  node[66].setVisible(true);                  node[73].setVisible(true);                  node[142].setVisible(true);                  node[157].setVisible(true);                  node[262].setVisible(true);                  node[277].setVisible(true);                  node[326].setVisible(true);                  node[333].setVisible(true);                  node[66].setSequence(0);                  node[73].setSequence(1);                  node[142].setSequence(2);                  node[157].setSequence(3);                  node[262].setSequence(4);                  node[277].setSequence(5);                  node[326].setSequence(6);                  node[333].setSequence(7);                  break;              case 9:                  node[66].setVisible(true);                  node[73].setVisible(true);                  node[142].setVisible(true);                  node[157].setVisible(true);                  node[262].setVisible(true);                  node[277].setVisible(true);                  node[326].setVisible(true);                  node[333].setVisible(true);                  node[210].setVisible(true);                  node[66].setSequence(0);                  node[73].setSequence(1);                  node[142].setSequence(2);                  node[157].setSequence(3);                  node[262].setSequence(4);                  node[277].setSequence(5);                  node[326].setSequence(6);                  node[333].setSequence(7);                  node[210].setSequence(8);                  break;              case 10:                  node[11].setVisible(true);                  node[25].setVisible(true);                  node[82].setVisible(true);                  node[180].setVisible(true);                  node[303].setVisible(true);                  node[369].setVisible(true);                  node[335].setVisible(true);                  node[238].setVisible(true);                  node[158].setVisible(true);                  node[56].setVisible(true);                  node[11].setSequence(0);                  node[25].setSequence(1);                  node[82].setSequence(2);                  node[180].setSequence(3);                  node[303].setSequence(4);                  node[369].setSequence(5);                  node[335].setSequence(6);                  node[238].setSequence(7);                  node[158].setSequence(8);                  node[56].setSequence(9);                  break;          }          return graph;      }*/      private int randomNumGenenration(int merge){          int temp=-1;          double x;          while(temp<0||temp>merge){              x=Math.random();              temp=(int)Math.floor(x*100);          }          return temp;      }      private void depictGraph(Graph graph){          Graphics g=image.getGraphics();          for(int i=0;i<400;i++){              if(node[i].isVisible()){                  node[i].draw(g);                                  info.append("Node "+node[i].getSequence()+" at "+i+"\n");              }          }          int start,end;        //  for(int u=0;u<graph.numVertices;u++)           //   for(int v=u+1;v<graph.numVertices;v++)             //     if(graph.matrix[u][v]!=Integer.MAX_VALUE){              //        start=searchId(u);              //        end=searchId(v);               //       if(start!=9999||end!=9999){               //           g.drawLine(node[start].x+15,node[start].y+15,node[end].x+15,node[end].y+15);               //           g.drawString(""+graph.matrix[u][v],(node[start].x+node[end].x)/2,(node[start].y+node[end].y)/2);                   //                               info.append("Edge "+node[start].getSequence()+"->"+node[end].getSequence()+" Wt "+graph.matrix[u][v]+"\n");                //      }               //   }             }      private int searchId(int x){          int index=0;          while(index<400){              if(node[index].getSequence()==x){                  return node[index].getId();              }              index++;          }          return 9999;      }      private class Node {          private int x,y;          private int id;          private boolean visible;          private int seq;          public Node(int i,int x,int y) {              this.x=x;              this.y=y;              id=i;              visible=false;              seq=Integer.MAX_VALUE;          }          public void draw(Graphics g){              g.setColor(Color.blue);              g.drawOval(x,y,30,30);              g.drawString(""+seq,x+6,y+18);          }          public void fill(Graphics g){              g.fillOval(x,y,30,30);              //g.setColor(Color.blue);              g.drawString(""+seq,x+6,y+18);          }          public boolean check(int x,int y){              if((x<this.x+30)&&(y<this.y+30)&&(x>=this.x)&&(y>=this.y)){                  return true;              }              else{                  return false;              }          }          public boolean isVisible(){              return visible;          }          public void setVisible(boolean b){              visible=b;          }          public int getSequence(){              return seq;          }          public void setSequence(int n){              seq=n;          }          public int getId(){              return id;          }      }      private class MouseKeeper extends MouseAdapter implements MouseMotionListener{          private int startx,starty;          private int lastx,lasty;          private boolean firstClicked=true;          public void MouseKeeper(){          }          public void mousePressed(MouseEvent e){          }          private void drawShape(Graphics g){          }          public void mouseDragged(MouseEvent e){          }          public void mouseReleased(MouseEvent e){              c_id=choose(e.getX(),e.getY());              if(drawNode&&c_id>=0&&c_id<=399&&!node[c_id].isVisible()){                  count++;              }              repaint();          }          public void mouseMoved(MouseEvent e){          }          public void mouseClicked(java.awt.event.MouseEvent e) {              if(drawNode){                  c_id=choose(e.getX(),e.getY());                  if(c_id>=0&&c_id<=399&&!node[c_id].isVisible()){                      node[c_id].setVisible(true);                      node[c_id].setSequence(count);                      Graphics g=image.getGraphics();                      node[c_id].draw(g);                      info.append("Node "+count+" at "+c_id+"\n");                  }              }              else if(drawEdge){                  c_id=choose(e.getX(),e.getY());                  if(firstClicked&&node[c_id].isVisible()){                      startx=node[c_id].x+15;                      starty=node[c_id].y+15;                      firstClicked=false;                  }                  else if(!firstClicked&&node[c_id].isVisible()&&(choose(startx,starty)!=c_id)){                      lastx=node[c_id].x+15;                      lasty=node[c_id].y+15;                      Graphics g=image.getGraphics();                      g.drawLine(startx,starty,lastx,lasty);          //            int weight=getEdgeWeight();          //            g.drawString(""+weight,(startx+lastx)/2,(starty+lasty)/2);           //           info.append("Edge "+node[choose(startx,starty)].getSequence()+"->"+node[choose(lastx,lasty)].getSequence()+" Wt "+weight+"\n");                      firstClicked=true;                      repaint();                      Edge temp=new Edge();                      temp.head=node[choose(startx,starty)].getSequence();                      temp.tail=node[choose(lastx,lasty)].getSequence();           //           temp.weight=weight;                      vector.addElement(temp);                  }              }          }     /*     private int getEdgeWeight(){              int temp=input.getInteger("Please Input Edgeweight:");              return temp;          }*/      }  }

⌨️ 快捷键说明

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