C++链表:建立链表

       今天学习了链表,之前看到过链表的一些知识,讲述包含数据域和指针域,但是不太懂,今天看了一些视频后有了一些浅显的了解。其实链表可以说是一个结构体指针,只是这个结构体里边的变量有数据和该结构体类型的指针变量。例如:

typedef struct LNode
{
    string data;
    struct LNode *next;
}LNode,*Linklist;

//*Linklist就表示该类型 的结构体指针,我们定义的时候可以用Linklist l;l = new LNode;在内存中开辟一个该结构体类型的内存,地址存到 l 中,一般用该方法定义头节点;用    LNode* p = new LNode,定义中间结点。

当然也可以把数据域再做成一个结构体放进去,或者把该结构体类型的指针放进去。一般还可以加一个last指针,构成双向链表,例如:

typedef struct LNode
{
    string data;
    struct LNode * next;
    struct LNode * last;
}LNode,*Linklist;

可以通过头插法和尾插法建立链表,头插法只需要利用头节点进行操作就可以;尾插法,还要建立一个尾结点来进行操作,下面是头插法的案例:

//创建链表:头插法
void creat_List(Linklist& l, int n)
{
    l = new LNode;//创建头指针
    l->next = NULL;
    for (int i = n; i > 0; i--)
    {
        LNode * p;
        p = new LNode;//创建一个新的节点
        cin>>p->data;
        p->next = l->next;
        l->next = p;
    }
}

下面是尾插法的案例:

//创建链表:尾插
void creat_Linklist2(Linklist& l, int n)
{
    l = new LNode;
    l->next = NULL;
    LNode* r;
    r = l;
    for (int i = n; i > 0; i--)
    {
        LNode* p;
        p = new LNode;
        cin >> p->data;
        r->next = p;
        r = p;
        p->next = NULL;
    }

}

你可能感兴趣的:(链表,c++,数据结构)