funkcja przeszukująca graf nieskierowany

0

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?

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;
    }
}
 
1
	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

		stanyWierzcholkow[odWierzcholka] = Zaznaczony_Do_Odwiedzenia;
		kolejkaDoPrzeszukania.add(odWierzcholka);

		while (!kolejkaDoPrzeszukania.isEmpty()) {
			int elStart = kolejkaDoPrzeszukania.poll();
			System.out.print(elStart + " ");
			for (Integer x : listaSasiedztwa[elStart]) {
				if (stanyWierzcholkow[x] == Nieruszany) {
					stanyWierzcholkow[x] = Zaznaczony_Do_Odwiedzenia;
					kolejkaDoPrzeszukania.add(x);
				}
			}
			stanyWierzcholkow[elStart] = Odwiedzony;
		}
	}

1 użytkowników online, w tym zalogowanych: 0, gości: 1