blad przy wyswietlaniu elementow ze struktury

0

Wiam.
Pisze program do tworzenia grafow za pomoca listy. Nie wiem czemu wyskakuje mi blad przy wyswietalniu moich grafow. Mysle ze to moze byc spowodowane tym ze operacje dodawania krawedzi robie wewnatrz klasy i metoda wyswietalanie nie ma dostepu do dancyh. HELP :/
blad wyskakuje przy linijce cout << wskaznik->powiazany << " waga: "<<" \n";

#include <iostream>
#include <vector>
#define ROZMIAR 100
using namespace std;
struct lista
{
	lista *kolejny;
	int powiazany;
	int waga;
};
class graf
{
private:
	int iloscWierzcholkow;
	int ilosKrawedzi;
	lista *tablica[ROZMIAR];
	lista *wskaznik;
	
public:
	
	//void dodajWierzcholek();
	void dodajKrawedz(int pierwszy, int drugi, int waga); // dodaje krawedz miedzy podanymi wierzcholkami
	bool polaczenieIstnieje(int pierwszy, int drugi); //sprawdza czy istenije polaczenie miedzy wierzcholkami przydatne przy losowaniu grafow
	void wyswietlanie();//wyswietla wierzcholki wraz z polaczeniami
};

void graf::dodajKrawedz(int pierwszy, int drugi, int waga)
{
	wskaznik = new lista;
	wskaznik->powiazany = drugi;
	wskaznik->kolejny = tablica[pierwszy];
	tablica[pierwszy] = wskaznik;


}
void graf::wyswietlanie()
{
	for (int i = 0; i < 20; i++)
	{
		cout << "Wierzcholek nr: " << i<<" ";
		wskaznik = tablica[i];
		while (wskaznik)
		{
			cout << wskaznik->powiazany << " waga: "<<" \n";
			wskaznik = wskaznik->kolejny;
		}
	}
}

int main()
{

	int k;
	graf grafcik;
//	grafcik.dodajWierzcholek();
	grafcik.dodajKrawedz(1, 10, 2);
	grafcik.dodajKrawedz(1, 11, 2);
	grafcik.dodajKrawedz(3, 2, 3);
	grafcik.wyswietlanie();

	cin >> k;
	return 0;
}
1
  1. http://4programmers.net/Pomoc/Forum_dyskusyjne/Dlaczego_nikt_nie_odpowiada_w_moim_w%C4%85tku - punkt o przytaczaniu błędu
  2. nigdzie nie alokujesz pamięci dla elementów tablica, a korzystasz z nich - to UB.
  3. nie korzystaj z nagiego new i delete, to antyidiomy w C++. Masz nawet zaincludowany <vector> - użyj go.
0

wlasnie nie wiem jak w tutaj skorzystac z vectora.

0

a to nie alokuje pamieci dla tablica Od razu tutaj ? lista *tablica[ROZMIAR];

1

A gdzie alokujesz pamięć na którą mają wskazywać elementy tablica?

0

nie wiem :(

1

No właśnie - nigdzie. Z tego co widzę możesz tu zamienić tablicę wskaźników na tablicę po prostu elementów.

0

zmienilem to i nic nie daje. A jak zamienic to by dzialalo na vectorze ?

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