概述:我目前正在尝试编写一个代码,该代码将采用AOV网络图并将其放入链接列表中。我怎么会遇到麻烦最好的方法来解决这个问题。我在纸面上了解图表如何以链表形式表示。
以下是图表:
我的思维过程/ Pusdo代码如下:
创建一个Linked-List类,只添加节点并为方法打印出来。 然后为每个边访问数组的索引并转到该链接列表。 那么我的数组会有[s,a,d,g,b,e,h,c,f,i,t],其中每个字母代表该顶点的>链表。因此,如果我想调用S顶点,我将不得不调用数组的> 0元素,这将指向s Linked-List。在C ++中是否有一个简单的实现>
这是我现在的链接列表类:
class List{
private:
typedef struct node{
char vertex;
node* next;
}* nodePtr;
nodePtr head;
nodePtr curr;
nodePtr temp;
public:
List();
void AddNode(char AddData);
void printList();
};
List::List(){
head = NULL;
curr = NULL;
temp = NULL;
}
void List::AddNode(char AddData){
nodePtr n = new node;
n->next = NULL;
n->vertex = AddData;
if(head != NULL){
curr = head;
while(curr->next != NULL){
curr = curr->next;
}
curr->next = n;
}
else{
head = n;
}
}
void List::printList(){
curr = head;
while(curr != NULL){
cout << curr->vertex << endl;
curr = curr->next;
}
}
非常感谢任何帮助。
编辑:
可以像这样工作使用双链表吗?
答案 0 :(得分:0)
您有图形问题,而不是列表问题。使用“node”和“edge”的图形隐喻代替“list”。
答案 1 :(得分:0)
有一个名为Adjacent Table的数据结构,用于在链表结构中存储图形
AT中的元素就像
struct ATEle {
char name;
ATEle * neighborPointer;
ATEle * nodelistPointer;
}
图中的节点组织在一个链表中,每个节点也是其所有邻居的链表的头部
e.g。我们有一个4个节点的图形,A,B,C,D和A连接B,C,D连接A,B连接C,D,在它的相邻表中看起来像:
A - &gt; B - &gt; ç
|
B - &gt; C - &gt; D
|
C
|
D - &gt;甲