尾插法建立单链表

要用到尾指针r

示意图如下:

 

关键步骤:

1先在内存中把新结点找出来,然后给新结点的数据域赋值,然后它的指针域为空

 

再把新结点接在尾结点的后头,也就是要给尾结点的指针域赋值r->next=p;

然后新插入的结点就是新的尾结点了,所以要移动指针r=p,让指针指向新的尾结点

 

接下来就可以继续操作下一个了:再在内存当中找到这样一块空间,开辟一个新的结点,然后将新结点记在我们尾结点的后头,然后让新结点变成新的尾结点,这样反复来做,直到所有的结点都插入到链表当中。

算法如下:

 

刚才头插法是倒位序,倒着从最后一个元素开始一次插入进去,尾插法就不用了,用正位序

用L来存储建好的链表所以它是一个引用型,返回这个链表,n是结点的个数。

第一步先建立头结点:在内存中分配一块空间,用头指针指向它,头结点的next域为空,

因为尾指针也指向头结点,所以将头指针赋值给尾指针

 

从0到n-1,总共要执行n次,我们把n个结点都插入进去:首先在内存中分配一块空间用指针,用指针变量p指向这块空间,然后输入data域的值

再给它的next域置空,然后新结点就生成了,

 

我们再把他接在我们当前链表的最后一个结点的后面,即为尾指针的next域赋值,赋的是我们

新开辟好的这个结点

 

再改变尾指针,让尾指针指向新结点,尾指针的值和p变量的值是一样的,都是指向新结点的指针

 

总览:

 

时间复杂度:O(n)

循环体里的语句,循环执行一次,语句里面的就执行一遍,循环n次,他就执行n次,其中循环判断n+1次,他们的数量级都是n

 

  • 16
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值