我已经使用LinkedList实现了无向图。我的问题是,每个LinkedList函数都收到读取acces冲突(p为0xCDCDCDCDCD)。
class LinkedList {
public:
Node *start;
LinkedList() { start = NULL; } //default constructor
//---------------------------------
~LinkedList() //destructor
{
Node *temp;
while (start)
{
temp = start->next;
delete start;
start = temp;
}
}
//----------------------------------
//get the address of first node of the linked list
Node* getStart() { return start; }
//---------------------------------
//insert an element into linked list
void insert(int data)
{
Node *ptr = new Node(data);
if (start == NULL)
{
start = ptr;
}
else
{
Node *temp = start;
while (temp->next)
temp = temp->next;
temp->next = ptr;
}
}
//---------------------------------
bool findNode(int data) {
Node *p = start;
while (p)
{
if (p->info == data)
return true;
p = p->next;
}
return false;
}
};
然后我实现了这样的Graph类:
class Graph {
private:
LinkedList *A;
int vertex;
int edges;
public:
Graph(int vertex) {
this->vertex = vertex;
edges = 0;
A = (LinkedList *)malloc(sizeof(LinkedList)*vertex);
}
void insertEdge(int u, int v) {
if (A[u].findNode(v) == false) {
A[u].insert(v);
A[v].insert(u);
edges++;
}
}
};
和节点:
class Node {
friend class LinkedList;
int info;
Node *next;
Node() //default constructor
{
info = 0;
next = 0;
}
Node(int item) //parameterized constructor
{
info = item;
next = 0;
}
};
主要:
int main()
{
Graph G(7);
G.insertEdge(1, 3);
G.insertEdge(4, 6);
G.displayGraph();
return 0;
}
我不确定到底发生了什么,但是,每次尝试调试它时,都会把我带到指针函数。