引言

当我们准备采用单链表形式实现线性表,第一步就是要建立单链表,即初始化。由于链表是一个动态结构,不需要预先分配空间,因此生成链表的过程就是“逐个插入”的过程,插入结点的位置可以让我们自由选择,故有了“头插法”和“尾插法”这两种方法。

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)

单链表建立——头插法和尾插法相关推荐

  1. 单链表的头插法和尾插法c语言实现

    /*单链表的头插法和尾插法c语言实现*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...

  2. 单链表的头插法和尾插法实现代码(无头结点)

    /*头指针,可以发现head是赋值为NULL,而不是head->next*/ //-----------------头插法------------------- node *head, *p; ...

  3. 关于单链表的头插法和尾插法

    #include<stdio.h> #include<stdlib.h>  typedef struct Node {         //        定义的链表类型    ...

  4. 链表的头插法和尾插法——头插尾插交替插入

    private static ListNode dummy = new ListNode(0);//头插法public static void headInsert(ListNode node){if ...

  5. 采用头插法和尾插法建立单链表

    面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...

  6. 头插法和尾插法建立带头节点的单链表

    有两种方法建立单链表,尾插法和头插法,他们的区别是:头插法是按照输入元素倒序建立,为尾插法为顺序插入,并且多一个尾节点,我们一般使用尾插法. 一.头插法 代码为: pCurr -> next = ...

  7. c语言 链表建立头插法尾插法,单链表的创建(头插法和尾插法)

    单链表的创建分为头插法和尾插法,头插法是不断地向头结点插入新的结点.这样会使你所插入的结点值呈现逆序,所以头插法也可以实现单链表的逆置.尾插法是不断地向插入的新元素之后再插入新的元素.需要注意的是头插 ...

  8. 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表

    http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...

  9. 头插法和尾插法创建链表(有无头结点)

    头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...

最新文章

  1. 【UI设计培训】字体设计-偏旁部首变形
  2. 斯坦福的智能马桶能凭肛纹识人,大便和尿液都把你的信息“卖”了……
  3. DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD,weight_decay】对Mnist数据集训练来抑制过拟合
  4. php获取回调url方法,php回调函数的实现方法介绍(代码)
  5. centos php安装redis扩展,Centos7编译安装redis、php安装phpredis扩展
  6. Lanstar v2.2.0跨年版 三栏简约的typecho主题
  7. angular.js入门基础(一)
  8. 动手学深度学习Pytorch Task05
  9. 【java笔记】数组概念初始化及相关操作
  10. 计算机网络投标书质量保证措施,计算机网络标书模板.doc
  11. 浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用
  12. admin5-用户管理
  13. 第18届中国智能家居主题沙龙在北京成功举办
  14. huawei路由器NAT配置
  15. Golang Base64编码解码
  16. 5月6日地图下载。同学们要练习!
  17. 2021河南高考成绩查询倒计时,距离2021年高考天数 2021高考倒计时
  18. 富士康本科计算机,富士康计算机 南开大学【深圳成考】
  19. java android时间工具类 week 月年
  20. Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用

热门文章

  1. 201803-2 碰撞的小球(C++)
  2. 联想服务器如何设置uefi启动不了系统,联想uefi启动设置方法 联想电脑如何设置uefi启动...
  3. sharding-jdbc学习antlr4
  4. node 下载Url上的压缩包 解压并保存文件夹到本地
  5. 牛奶包装袋上的秘密——震惊!
  6. When I ...
  7. Shopee视频处理技术后台应用
  8. 香港直播服务器优化加速
  9. 周傲英、熊辉、李飞飞邀您共享技术嘉年华!BDTC 八折优惠现已进入两日倒计时(附大会终版日程)...
  10. python散点地图_Python交散点地图