双向链表与C / C ++中的多链表

时间:2014-04-02 10:34:34

标签: c++ c data-structures

双向链表和多链表之间有什么区别? 在C / C ++程序的帮助下解释我会更好。

4 个答案:

答案 0 :(得分:11)

<强>定义

多链表是一个链表,其中每个节点可能包含指向链表的多个节点的指针。

双链表是多链表的特例。它有两种特殊之处:

  1. 每个节点只有2个指针。

  2. 指针是彼此完全相反的。

  3. 示例

    多链表:

    enter image description here

    双重链接列表:

    enter image description here

    <强>表示

    多链表:

    typedef struct node
    {
        int data;
        vector<struct node *> pointers;
    }Node;
    

    双重链表:

    typedef struct node
    {
        int data;
        struct node* prev;
        struct node* next;
    }Node;
    

答案 1 :(得分:0)

双向链表是指每个节点有2个指针,1个指向前一个节点,另一个指向该节点后节点的指针。
在多链表中会有几个指针,每个指针根据一些标准对节点进行排序 不同的是, 在双向链表中,我们可以在任一方向上遍历列表,但是它被命令形成1个列表,即one ordering of nodes。在多链接列表中可以有multiple ordering of nodes。每个指针可以根据不同的标准对列表进行排序,并在使用该指针遍历列表时形成不同的列表。

阅读this,了解多链路如何根据用于遍历列表的指针在多链路列表中获取不同的排序。

答案 2 :(得分:0)

双向链表以正向和反向顺序链接元素 多链表以几种不同的方式链接元素 与彼此无关。

答案 3 :(得分:0)

双向链表:双向链表中的每个节点都有一个指向前一个节点(第一个节点的excpet)和下一个节点(最后一个节点除外)的链接。

// Node in a doubly linked list
struct node
{
    unsigned int id;
    unsigned int age;
    std::string name;
    struct node *previous;
    struct node *next;
}

多链表:多链表的节点包含各种链接,用于组织元素集合或维护一组元素的多个顺序等。

// Node in a matrix
struct node
{
    unsigned int id;
    unsigned int age;
    std::string name;
    struct node *next_in_row;
    struct node *next_in_column;
}

// Node for maintaining multiple order of one set of elements
struct node
{
    int id;
    unsigned int age;
    std::string name;
    struct node *next_id_in_order;
    struct node *next_age_in_order;
}