单链表建立——头插法和尾插法
引言
当我们准备采用单链表形式实现线性表,第一步就是要建立单链表,即初始化。由于链表是一个动态结构,不需要预先分配空间,因此生成链表的过程就是“逐个插入”的过程,插入结点的位置可以让我们自由选择,故有了“头插法”和“尾插法”这两种方法。
1、头插法(前插法)
课本的解释:通过将新结点逐个插入链表的头部(头节点之后)来创建链表,每次申请一个新结点,读入相应的数据元素值,然后将新结点插入到头结点之后。
重点:每次生成的新结点都是要与头结点相连接的,每个新结点都插在了原来第一个结点的前面。通过这种方法建立的链表是后来居前的,即链表是逆序的。因此,若有题目要求实现线性表的逆序表示,首先考虑头插法。
指针H始终指向头结点,指针s指向新结点。
①表示初始化空表 ②表示申请新结点并赋值 ③表示插入第一个结点 ④表示插入第二个结点
算法描述:
void CreateList(LinkList &L, int n)
{L=new LNode;L->next=NULL; //建立带头结点的空表 for(int i=0;i<n;i++){p=new LNode; //生成新结点 cin>>p->data; //输入元素值赋给新结点*p的数据域 p->next=L->next; //这一步和下一步是将新结点*p插入到头结点子之后 L->next=p;}
}
时间复杂度:O(n)
2、尾插法(后插法)
课本的解释:通过将新结点逐个插入到链表的尾部来创建链表。同前插法一样,每次申请一个新结点,读入相应的数据元素值。不同的是,为了使新结点能够插入到表尾,需要增加一个尾指针 r 指向链表的尾结点。
重点:生成的一个新结点是直接插入当前链表的尾部,也就是让原来最后一个结点指向该新结点。这也是链表长度增长的一种最基本的方式。通过这种方法建立的链表是后来居后的,即链表是顺序的。一般情况下使用尾插法更方便。
其中指针H始终指向头结点,指针s指向新结点,指针r始终指向单链表的表尾。
①表示初始化空表 ②表示申请新结点并赋值 ③表示插入第一个结点 ④表示插入第二个结点
算法描述:
void CreateList(LinkList &L, int n)
{L=new LNode;L->next=NULL; //建立带头结点的空表 r=L; //尾指针r指向头结点 for(int i=0;i<n;i++){p=new LNode; //生成新结点 cin>>p->data; //输入元素值赋给新结点*p的数据域 p->next=L->next; //这一步和下一步是将新结点*p插入到头结点子之后 L->next=p;r=p; //r指向新的尾结点*p }
}
时间复杂度:O(n)
单链表建立——头插法和尾插法相关推荐
- 单链表的头插法和尾插法c语言实现
/*单链表的头插法和尾插法c语言实现*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...
- 单链表的头插法和尾插法实现代码(无头结点)
/*头指针,可以发现head是赋值为NULL,而不是head->next*/ //-----------------头插法------------------- node *head, *p; ...
- 关于单链表的头插法和尾插法
#include<stdio.h> #include<stdlib.h> typedef struct Node { // 定义的链表类型 ...
- 链表的头插法和尾插法——头插尾插交替插入
private static ListNode dummy = new ListNode(0);//头插法public static void headInsert(ListNode node){if ...
- 采用头插法和尾插法建立单链表
面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...
- 头插法和尾插法建立带头节点的单链表
有两种方法建立单链表,尾插法和头插法,他们的区别是:头插法是按照输入元素倒序建立,为尾插法为顺序插入,并且多一个尾节点,我们一般使用尾插法. 一.头插法 代码为: pCurr -> next = ...
- c语言 链表建立头插法尾插法,单链表的创建(头插法和尾插法)
单链表的创建分为头插法和尾插法,头插法是不断地向头结点插入新的结点.这样会使你所插入的结点值呈现逆序,所以头插法也可以实现单链表的逆置.尾插法是不断地向插入的新元素之后再插入新的元素.需要注意的是头插 ...
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...
- 头插法和尾插法创建链表(有无头结点)
头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...
最新文章
- 【UI设计培训】字体设计-偏旁部首变形
- 斯坦福的智能马桶能凭肛纹识人,大便和尿液都把你的信息“卖”了……
- DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD,weight_decay】对Mnist数据集训练来抑制过拟合
- php获取回调url方法,php回调函数的实现方法介绍(代码)
- centos php安装redis扩展,Centos7编译安装redis、php安装phpredis扩展
- Lanstar v2.2.0跨年版 三栏简约的typecho主题
- angular.js入门基础(一)
- 动手学深度学习Pytorch Task05
- 【java笔记】数组概念初始化及相关操作
- 计算机网络投标书质量保证措施,计算机网络标书模板.doc
- 浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用
- admin5-用户管理
- 第18届中国智能家居主题沙龙在北京成功举办
- huawei路由器NAT配置
- Golang Base64编码解码
- 5月6日地图下载。同学们要练习!
- 2021河南高考成绩查询倒计时,距离2021年高考天数 2021高考倒计时
- 富士康本科计算机,富士康计算机 南开大学【深圳成考】
- java android时间工具类 week 月年
- Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
热门文章
- 201803-2 碰撞的小球(C++)
- 联想服务器如何设置uefi启动不了系统,联想uefi启动设置方法 联想电脑如何设置uefi启动...
- sharding-jdbc学习antlr4
- node 下载Url上的压缩包 解压并保存文件夹到本地
- 牛奶包装袋上的秘密——震惊!
- When I ...
- Shopee视频处理技术后台应用
- 香港直播服务器优化加速
- 周傲英、熊辉、李飞飞邀您共享技术嘉年华!BDTC 八折优惠现已进入两日倒计时(附大会终版日程)...
- python散点地图_Python交散点地图