单链表建立的两种方法 头插法和尾插法

目录:

方法1:头插法

方法2:尾插法


方法1:头插法

基本思路:

定义一个链表类型的指针l,指针l指向的是链表的首地址,而不是链表的第一个数,指针l指向的下一个链表类型才是链表的第一个数,每次往链表中加数都加到链表中的第1个位置(即指针l指向的位置)。

代码:

最好自己看代码在纸上模拟一下过程

#include<bits/stdc++.h>
using namespace std
typedef struct Node
{
    int value;
    struct Node *next;
}node,*linkedlist;
linkedlist linkedlistcreath()//返回的是该链表的地址
{
    node *l=(node*)malloc(sizeof(node));
    l->next=NULL;
    int number;
    while (scanf("%d",&number)!=EOF)
    {
        node *p=(node*)malloc(sizeof(node));//新建一个node结构并为其申请空间
        p->value=number;//给新建的node结构赋值
        p->next=l->next;//赋值p所指的节点(就是l所指的节点,即链表的第2个节点)
        l->next=p;//将l所指的节点更新为p点
    }
    return l;//返回头节点地址

}

方法2:尾插法

基本思路:

还是先定义一个链表类型的指针l,指针l指向的是链表的首地址,而不是链表的第一个数,指针l指向的下一个链表类型才是链表的第一个数,然后定义一个r指针,保证r指针始终指向链表的最后一个位置上的节点,然后让新加的节点加入到r指针指向的节点的后面。

代码如下:

最好自己看代码在纸上模拟一下过程

#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
    int value;
    struct Node *next;
} node,*linkedlist;
linkedlist linkedlistcreatt()//返回的是该链表的地址
{
    node *l=(node*)malloc(sizeof(node));
    l->next=NULL;
    node *r;//r指向的始终是该链表的最后一个node结构
    r=l;//这个地方是地址之间的赋值,所以对r操作就相当于对l操作,即对链表最后一个node结构操作
    int number;
    while (scanf("%d",&number)!=EOF)
    {
        node *p=(node*)malloc(sizeof(node));//新建一个node结构并为其申请空间
        p->value=number;//给新建的node结构赋值
        r->next=p;//将p插入到链表的最后一个node结构的后面
        p->next=NULL;//此时p已经是链表的最后一个了,给p的next赋值
        r=p;//让r等于链表的最后一个node结构,即p节点
    }
    return l;//返回头节点的地址

}

  • 22
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值