链表:头插法与尾插法(简易图解和代码)

2023-05-16

头插法

定义:输入的数据次序生成的链表节点次序相反,例如:按1,2,3顺序进行头插之后,最终排序却变成了3,2,1。简而言之就是逆序插入
定义图解
在这里插入图片描述
代码图解
在这里插入图片描述
代码:(使用头插法建立单链表)

Linklist head_insert(Linklist &L){
	//准备工作
	LNode *s; // s是指向待插入结点的指针
	int x; // 传入结点中data的值
	L=(Linklist*)malloc(sizeof(LNode)); 
	// ❤创建L链表,
	//malloc()函数为动态申请空间
	//(Linklist*)为强制转化为Linklist类型
	L->next=NULL; // L链表的头结点置空
	scanf("%d",&x);
	//以下核❤
	while(x!=NULL){ // 输入的值不为空,就可以进行头插了
		s=(LNode*)malloc(sizeof(LNode)); // 题目没给结点,所以需要申请
		s->data=x; // s是个指针,需要指向一个值才能进行头插
		s->next=L->next; // 头插法核❤
		L->next=s;
		scanf("%d",&x);
	}
	return L; // 头插完成,返回最终的L链表
}

小结:头插通常应用于逆置。
头插防断链,如何理解?
分析:如图所示,若要将链表B头插进链表A中,此时p->next更改为A->next了,如果没有r指针,当头插完p当前所指结点后,B链表就断了,那么就无法将剩下的B链表结点插入到A链表中了,所以需要一个r指针,始终指向p的下一个结点,即r=p->next。
代码图解
在这里插入图片描述

尾插法

定义:输入的数据次序生成的链表节点次序相同,例如:按1,2,3顺序进行头插之后,最终排序还是1,2,3。简而言之就是顺序插入
定义图解
在这里插入图片描述
代码图解
在这里插入图片描述
代码:(使用尾插法建立单链表)

Linklist tail_insert(Linklist &L){
	LNode *s; // s为指向待插入结点的指针
	int x; // 传入新结点s中的data值
	Node *r=L; // 标记尾结点
	L=(Linklist*)malloc(sizeof(LNode)); // 若此链表带头结点,就要申请头结点
	scanf("%d",&x);
	while(x!=NULL){
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		r->next=x; //尾插法核❤
		r=s;  //s尾插进链表,r不断标记尾结点
		scanf("%d",&x);
	}
	r->next=NULL; // 单链表最后一个结点置空
	return L;
}

尾插法的特点:在表尾放置一个指针,不断都标记表尾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链表:头插法与尾插法(简易图解和代码) 的相关文章

随机推荐

  • C++随机数

    C 43 43 随机数 C 43 43 提供了两个函数 xff0c 用于返回随机数 xff1a rand 和 srand rand 功能 xff1a 随机数发生器 用法 xff1a include lt stdlib h gt int ra
  • 进程如何判断是否在docker环境里运行

    一 判断根目录下 dockerenv 文件 docker环境下 xff1a ls alh dockerenv 非docker环境 xff0c 没有这个 dockerenv文件的 root 64 4cb54de415d4 ls alh doc
  • lua元表、元方法

    lua元表 元方法 lua官方参考手册 xff1a https www runoob com manual lua53doc manual html 2 4 一 总结 xff1a 1 普通的表 xff0c 找不到了 xff0c 或者无法进行
  • 一个less文件中引入另一个less文件

    假设有两个 less的文件1 less 和2 less 在1 less 中引入2 less文件 64 import 34 2 less 34 34 34 是一定不可以忘记的
  • Python——函数

    函数的创建和调用 xff1a 函数的创建和调用 为什么需要函数 xff1a 复用代码 隐藏实现细节 提高可维护性 提高可读性便于调试 函数的创建 def 函数名 输入参数 函数体 return xxx span class token ke
  • ubuntu18.04安装微信

    1 安装deepin wine 使用shell的方法下载各种deb包 1 具体的操作为 xff1a 在home中打开终端 xff08 terminal xff09 xff0c 运行以下语句 xff1a gedit install sh 弹出
  • 实现MySql的主从复制(两台虚拟机)详解

    实现MySql的主从复制 xff08 非单机 xff09 文章目录 实现MySql的主从复制 xff08 非单机 xff09 首先了解心跳线实现数据同步一 mysql主从复制原理是什么 xff1f 二 使用步骤1 安装Mysql2 数据库进
  • ubuntu安装完anaconda,添加快捷启动方式

    1 进入文件夹 xff0c 找到anaconda的bin文件并进入 home 用户 anaconda3 bin 2 进入后右键打开terminal 3 在terminal中输入 anaconda navigator 4 这时候就会发现ana
  • 分别用汇编语言、C语言编程实现LED流水灯

    一 C语言编程 1 先创建一个新的工程 2 文件名 3 右键Source Group创建一个 c文件 4 在 c文件中放入以下代码 APB2使能时钟寄存器 define RCC AP2ENR unsigned volatile int 0x
  • SyntaxError: invalid syntax的问题原因和解决办法

    写在这里的初衷 xff0c 一是备忘 xff0c 二是希望得到高人指点 xff0c 三是希望能遇到志同道合的朋友 目录 一 问题二 原因及解决办法 一 问题 span class token comment An highlighted b
  • Java 字符串匹配的三种方法

    文章目录 一 示例二 解释1 replace 方法2 replaceAll 方法3 replaceFirst 方法4 常用的字符列表 一 示例 如图 xff0c 都是为了替换字符串s中的 34 34 符号 xff0c 但三种匹配方法 xff
  • 【VMware+ubuntu】关闭还原虚拟机后网络断开的解决办法

    使用ifconfig和ip addr 发现对应网卡down掉了 手动执行ifcconfig ens33 up把网卡up起来 xff0c 发现网卡是起来了 xff0c 但是没有IP 重启网络服务sudo service network man
  • MySQL中的视图

    视图概述 视图是一种虚拟存在的表 xff0c 并不在数据库中实际存在 xff0c 它的数据依赖于真实存在的数据表 通过视图不仅可以看到其依赖数据表中的数据 xff0c 还可以像操作数据表一样 xff0c 对数据表中的数据进行添加 修改和删除
  • ubuntu在更新软件时出现E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease

    问题 E Release file for http security ubuntu com ubuntu dists bionic security InRelease is not valid yet invalid for anoth
  • 配置pip环境变量以及PYTHONPATH的作用

    配置pip环境变量 python的环境变量PYTHONPATH PYTHONPATH是Python搜索路径 xff0c 默认我们import的模块都会从PYTHONPATH里面寻找
  • AtCoder Beginner Contest 218 C - Shapes (模拟)

    linkkkk 题意 xff1a 给两个 n n n n n n 的矩阵 xff0c
  • CF1169C. Increasing by Modulo(二分)

    linkkkkk 题意 xff1a 给出 n k n k n k 和数组 a a
  • 【c++类的构造函数】几种写法及问题

    c 43 43 类的构造函数 几种写法及问题 一 构造函数的定义 类通过一个或几个特殊的与类同名的成员函数来控制其对象的初始化过程 xff0c 这些函数叫构造函数 构造函数的任务是初始化类对象的数据成员 xff0c 无论何时只要类的对象被创
  • 【洛谷】P1786 帮贡排序 2020-11-07

    洛谷 P1786 帮贡排序 简单结构体排序题 xff0c 用bool函数加sort就可以 主要的点是如果需要按某种奇怪的顺序排序的话 xff0c 就把那个奇怪的顺序表上号好了 题解 xff1a xff08 还是多加注释比较好 xff09 s
  • 链表:头插法与尾插法(简易图解和代码)

    头插法 定义 xff1a 输入的数据次序生成的链表节点次序相反 xff0c 例如 xff1a 按1 2 3顺序进行头插之后 xff0c 最终排序却变成了3 2 1 简而言之就是逆序插入 定义图解 xff1a 代码图解 xff1a 代码 xf