欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

建立线性链表的 "头入式 "和 "尾入式 "方法的异同

最编程 2024-06-11 13:31:57
...
假如现在有一个待插入数据的链表指针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,这样逻辑上更清晰一些。




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