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;
    }

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值