#include<iostream>
using namespace std;
class TCSGraph{
public:
void addVertex(int vertex);
void display();
TCSGraph(){
head = NULL;
}
~TCSGraph();
private:
struct ListNode
{
string name;
struct ListNode *next;
};
ListNode *head;
}
void TCSGraph::addVertex(int vertex){
ListNode *newNode;
ListNode *nodePtr;
string vName;
for(int i = 0; i < vertex ; i++){
cout << "what is the name of the vertex"<< endl;
cin >> vName;
newNode = new ListNode;
newNode->name = vName;
if (!head)
head = newNode;
else
nodePtr = head;
while(nodePtr->next)
nodePtr = nodePtr->next;
nodePtr->next = newNode;
}
}
void TCSGraph::display(){
ListNode *nodePtr;
nodePtr = head;
while(nodePtr){
cout << nodePtr->name<< endl;
nodePtr = nodePtr->next;
}
}
int main(){
int vertex;
cout << " how many vertex u wan to add" << endl;
cin >> vertex;
TCSGraph g;
g.addVertex(vertex);
g.display();
return 0;
}
2
A
ответ
2
Существует проблема в вас addvertex
метод:
У вас есть:
if (!head)
head = newNode;
else
nodePtr = head;
while(nodePtr->next)
nodePtr = nodePtr->next;
nodePtr->next = newNode;
, но это должно быть:
if (!head) // check if the list is empty.
head = newNode;// if yes..make the new node the first node.
else { // list exits.
nodePtr = head;
while(nodePtr->next) // keep moving till the end of the list.
nodePtr = nodePtr->next;
nodePtr->next = newNode; // add new node to the end.
}
Также вы не что делает поле next
newNode
NULL
:
newNode = new ListNode;
newNode->name = vName;
newNode->next= NULL; // add this.
Также это хорошая практика для освобождения динамически распределенной памяти. Таким образом, вместо пустого деструктора
~TCSGraph();
Вы можете выслать список в dtor.
EDIT: Другие ошибки
Вы отсутствующий; после объявления класса:
class TCSGraph{
......
}; // <--- add this ;
Также объявлен только ваш деструктор. Нет определения. Если вы не хотите давать какие-либо определения, у вас должно быть хотя бы пустое тело. Так заменить
~TCSGraph();
с
~TCSGraph(){}
0
Вы взглянули на Boost Graph Library и boost::adjacency_list
?
о моих ошибках>< но это все та же ошибка я перед вот этими сообщения об ошибках: > Ошибка: новые типы не может быть определены в возвращаемом типе> два или больше типов данных в объявлении 'AddVertex» | > для 'TCSGraph TCSGraph :: addVertex (int) 'не соответствует ни одному в классе' TCSGraph' | > ошибка: кандидат: void TCSGraph :: addVertex (int) | > Ошибка: 'TCSGraph TCSGraph :: addVertex (int) 'и' void TCSGraph :: addVertex (int)' не может быть перегружен – sum1needhelp