将链接列表存储为Array C ++中的索引

时间:2013-07-31 12:01:51

标签: c++ graph linked-list

概述:我目前正在尝试编写一个代码,该代码将采用AOV网络图并将其放入链接列表中。我怎么会遇到麻烦最好的方法来解决这个问题。我在纸面上了解图表如何以链表形式表示。

以下是图表:

enter image description here

我的思维过程/ 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;
    }
}

非常感谢任何帮助。

编辑: 可以像这样工作使用双链表吗? enter image description here

2 个答案:

答案 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;甲