ich hätte da mal wieder gern ein Problem:
Code: Alles auswählen
vector<int> getNodeList(vector<int> EdgeList)
{
	vector<int> Nodes;
	vector<int> NodeList;
	vector<int> zahlenspeicher;
	int counter;
	int z = (int)EdgeList[1]*2;
	NodeList.push_back(EdgeList[0]);
	NodeList.push_back(EdgeList[1]);
	for(int i = 2; i < (int)EdgeList.size(); i++)
	{
		int j = 0;
		bool insert = true;
		while(j < (int)Nodes.size())
		{
			if(Nodes.size() != 0)
			{
				if(Nodes[j] == EdgeList[i])
				{
					insert = false;
					break;
				}
				j++;
			}
		}
		if(insert)
		{
			Nodes.push_back(EdgeList[i]);
		}
	}
	
	for(int i = 0; i < Nodes.size() ; i++)		//Führe für jeden Knoten folgende Aktion aus
	{
		counter = 0;							//Zähler auf 0
		for(int j = 2; j < z; j+=2)
		{
			if(EdgeList[j] == Nodes[i] || EdgeList[j+1] == Nodes[i])
			{
				counter++;		//Zähler wieviele Kanten von einem Knoten abgehen
				if(EdgeList[j]!=Nodes[i])		//speichere den Folgeknoten in extra Speicher
					zahlenspeicher.push_back(EdgeList[j]);
				else if(EdgeList[j+1]!=Nodes[i])
					zahlenspeicher.push_back(EdgeList[j+1]);
			}
		}
		if(counter != 0)
		{
			NodeList.push_back(counter);	//Schreibe Anzahl der Folgeknoten in Knotenliste
			
			for(int z = 0; z < zahlenspeicher.size(); z++)
			{
				NodeList.push_back(zahlenspeicher[z]);		//Schreibe Folgeknoten in Knotenliste
			}
			while(zahlenspeicher.size() != 0)				//Leere Speicher
				zahlenspeicher.pop_back();
		}
	}
	return NodeList;
};
meine Bedingungen greifen nicht, wenn die letzten 2 Stellen des Vektors <EdgeList> erreicht sind. Mit anderen Worten, meine Knotenliste wird falsch, da die letzten 2 Werte im Vektor einfach überlesen werden. Hat jemand eine Idee woran das liegen könnte?
Code: Alles auswählen
if(EdgeList[j] == Nodes[i] || EdgeList[j+1] == Nodes[i])*kleine Ergänzung*
Zur Verbildlichung:
sei z = 14;
dann funktionieren die Bedingungen einwandfrei bis zu EdgeList[12] bzw EdgeList[12 + 1]
bei EdgeList[14] bzw EdgeList[14 + 1] wird alles verdrängt, was eigentlich stimmen müsste...
viele Grüße,
Sukka



