“头插法”与“尾插法”建立线性链表的异同

本文详细介绍了链表建立中的两种插入方式:头插法和尾插法。头插法下新节点作为链表头部,使链表顺序与输入顺序相反;而尾插法则是在链表尾部插入新节点,保持顺序一致。根据实际需求选择合适的方法至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们建立一个线性链表的时候,可以使用不同的插入方式,一种被称为“头插法”,另一种被称为“尾插法”,这两种方法都能够建立链表,但最终使用时稍有区别。
采用头插法建立链表时,新加入的元素指向链表头,链表头指向新加入的元素。
假如现在有一个待插入数据的链表指针Head,程序中你用malloc()动态开辟了一个链表节点,并用一个叫temp的指针指向该节点,下面两句话能够将新节点以头插法链入链表

temp->next=Head;            //新节点链入队首



 
Head=temp;                //头指针指向新节点(新节点称为新的队首)




这种方式建立的链表顺序与数据输入顺序相反,比如,你在屏幕上顺序输入1 2 3 4 5,存储在链表里的数据为5 4 3 2 1,因为每一个数据都是在第一个数据前插入







现在来看看后插法。
后插法是将新节点插入原有链表尾部,我们还是用temp指向新节点,用Head指向现有链表,Head指针不能动,此时我们需要用一个P指针指向当前链表的尾部,接下来后插法使用如下两句来实现。

p->next=temp;            //链入新节点



p=p->next;             //队尾指针指向新的队尾


这种方式建立的链表顺序与数据输入顺序相同,即输入1 2 3 4 5,链表中存储的就是1 2 3 4 5,这样逻辑上更清晰一些。




这两种方法都能够建立链表,本质上没区别,但是尾插法多定义了一个链表尾指针,这点开销应该不算什么。 若果你是要建立一个队列,那么应该用尾插法,确保“先入先出”,或者从逻辑清晰的角度来讲,尾插法更符合人们的思维习惯,即输入顺序与存储顺序相同,如果你是要建立一个栈,那么,头插法更适合,因为栈的逻辑结构是“先入后出”,与头插法的存储顺序是一致的,主要看是什么需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值