Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[JAVA] problem z napisaniem funkcji

#1
[JAVA] problem z napisaniem funkcji
Hej :) mam mały problem z napisaniem funkcji przeszukującej wszerz graf nieskierowany. Zadeklarowałam wszystkie potrzebne elementy, ale dochodzę do momentu stworzenia pętli i mam myślową blokadę. Znajdzie się jakiś dobry człowiek który mi z tym detalem pomoże?

Kod:
package grafy2;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;


public class GrafNieskierowanyLista extends GrafNieskierowany{
   
   protected static final byte Nieruszany = 0;
   protected static final byte Zaznaczony_Do_Odwiedzenia = 1;
   protected static final byte Odwiedzony = 2;
   
   private LinkedList<Integer> []listaSasiedztwa;
   
   
   public GrafNieskierowanyLista(int iloscWierzcholkow){
       listaSasiedztwa = new LinkedList[iloscWierzcholkow];
       
       for (int i = 0; i < listaSasiedztwa.length; i++) {
           listaSasiedztwa[i] = new LinkedList<Integer>();
       }
       
   }
   @Override
   public void dodajKrawedz(int wStart, int wKoncowy) {
       if(wStart < 0 || wKoncowy < 0 || wStart == wKoncowy)
           throw new IllegalArgumentException("Niewlasciwy numer wierzcholka");
       if (listaSasiedztwa[wStart].indexOf(wKoncowy) < 0)
       listaSasiedztwa[wStart].add(wKoncowy);
       if (listaSasiedztwa[wKoncowy].indexOf(wStart) < 0)
       listaSasiedztwa[wKoncowy].add(wStart);
       
   }

   @Override
   public void przeszukajWszerz(int odWierzcholka) {
       byte stanyWierzcholkow[] = new byte[listaSasiedztwa.length];
       for (int i = 0; i<stanyWierzcholkow[i]; i++)
           stanyWierzcholkow[i] = Nieruszany;
       Queue<Integer> kolejkaDoPrzeszukania = new LinkedList<Integer>();
//kolejka do ktorej wrzucamy info czy el zostal zaznczony
       
       
       
       while(!kolejkaDoPrzeszukania.isEmpty()){
           int elStart=kolejkaDoPrzeszukania.peek();
           System.out.print(elStart+" ");
           stanyWierzcholkow[elStart] = Odwiedzony;
           
           
           
           for(int i=0; i<listaSasiedztwa.length;i++){
               if(listaSasiedztwa[wStart]==1){
                   if (stanyWierzcholkow[i] == Nieruszany) {
                       stanyWierzcholkow[i] = Zaznaczony_Do_Odwiedzenia;
                       kolejkaDoPrzeszukania.remove(i);
                   }
               }
           }
       }
   }

   @Override
   public void przeszukajWGlab(int odWierzcholka) {
       byte stanyWierzcholkow[] = new byte[listaSasiedztwa.length];
       for (int i = 0; i<stanyWierzcholkow[i]; i++)
           stanyWierzcholkow[i] = Nieruszany;
       Stack<Integer> stosDoPrzeszukania = new Stack<Integer>();
//stos do którego wrzucamy info czy el został zaznczony
       
       stosDoPrzeszukania.push(odWierzcholka);
       
       while( ! stosDoPrzeszukania.isEmpty()){
           int wStart = stosDoPrzeszukania.pop();//odwiedz szczyt
           System.out.print(wStart+" ");
           //zaznacz szczyt
           stanyWierzcholkow[wStart] = Odwiedzony;
           //nieruszanych sÄ…siadĂłw zaznacz do odwiedzin
           for(int i = 0; i<listaSasiedztwa.length; i++){
               //jezeli to jest sÄ…siad
       
                   if(stanyWierzcholkow[i] == Nieruszany){
                       stanyWierzcholkow[i] = Zaznaczony_Do_Odwiedzenia;
                       stosDoPrzeszukania.push(i);
                   }
               }
           
       
       }
       System.out.println("");
   }
   @Override
   public String toString() {
      String wynik = "";
       for(int i = 0;i <listaSasiedztwa.length; i++){
          wynik = wynik +i+" ; ";
          LinkedList<Integer> sasiedziBiezacego = listaSasiedztwa[i];
          for(int j = 0; j<sasiedziBiezacego.size(); j++){
              wynik += sasiedziBiezacego.get(j)+" -> ";
          }
         
          wynik = wynik +"\n";
      }
      return wynik;
   }
}
 System operacyjny: windows_seven Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([JAVA] problem z napisaniem funkcji)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Wykres Funkcji w Javie wanhelsing 4 14179 17.02.2018, 22:27
Ostatni post: wanhelsing
  Java początkujący problem ze zrozumieniem kodu MatL70 6 10565 20.06.2017, 12:24
Ostatni post: MatL70
  VisualBasic - tablicowanie wartości funkcji . samanta19 2 10393 20.01.2017, 01:01
Ostatni post: samanta19

Skocz do: