带头结点的头插法和尾插法创建单链表

2023-11-03

首先我们先定义一个链表的结构体。

typedef int DataType;
typedef struct Node {
	DataType  data;
	struct Node* next;
}*SLNode,SLnode;   //定义链表的结构体

因为是带头节点的链表,所以我们先创建一个头节点head,创建后将head传入insert中去。

int main(void)
{
	int n;
	SLNode head; 
	head = (SLNode)malloc(sizeof(SLnode));   //头节点
	printf("请输入要创建的点链表的个数:\n");
	scanf_s("%d",&n);  //创建个数
	insert(head,n);
	print(head);
}

我们使用头插法来创建单链表,其实就是每次在链表的头部进行插入,这样插入会让输入和输入的顺序相反,例如我们输入123,输入的是321。

void insert(SLNode head,int n)   //使用头插法创建单链表
{
	SLNode p;
	int i;
	int data;
	head->next = NULL;
	for (i = 0; i < n; i++)
	{
		p= (SLNode)malloc(sizeof(SLnode));
		scanf_s("%d",&data);
		p->data = data;
		p->next = head->next;
		head->next = p;
	}
}

完整代码如下:

#include <stdio.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node {
	DataType  data;
	struct Node* next;
}*SLNode,SLnode;   //定义链表的结构体
void insert(SLNode q,int n);
void print(SLNode head);
int main(void)
{
	int n;
	SLNode head; 
	head = (SLNode)malloc(sizeof(SLnode));   //头节点
	printf("请输入要创建的点链表的个数:\n");
	scanf_s("%d",&n);  //创建个数
	insert(head,n);
	print(head);
}
void insert(SLNode head,int n)   //使用头插法创建单链表
{
	SLNode p;
	int i;
	int data;
	head->next = NULL;
	for (i = 0; i < n; i++)
	{
		p= (SLNode)malloc(sizeof(SLnode));
		scanf_s("%d",&data);
		p->data = data;
		p->next = head->next;
		head->next = p;
	}
}
void print(SLNode head)
{
	SLNode L = head->next;
	while (L ->next != NULL)
	{
		printf("%-2d",L->data);
		L = L->next;
	}
	printf("%-2d\n",L->data);
}

尾插法

尾插法和头插法的插法刚好相反,尾插法是从链表尾部开始插入,所以插入的顺序和输出的顺序是完全一致的。例如我们输入的顺序是 1 2 3,输出的就是 1 2 3。

void  insert(SLNode head, int n)             //尾插法的写法
{
	SLNode q,p;
	int n,data;
	q = head;
	for (int i; i < n; i++)
	{
		p = (SLNode)malloc(sizeof(SLnode));
		scanf_s("%d",&data);
		p->data = data;
		p->next = q->next;
		q->next = p;
		q = p;
	}
}

其余代码和上面的完整代码一样。

结果:

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

带头结点的头插法和尾插法创建单链表 的相关文章

随机推荐

  • 关系数据库的特点

    关系数据库的特点 数据库管理系统将具有一定结构的数据组成一个集合 它主要具有以下几个特点 1 数据的结构化 数据库中的数据并不是杂乱无章 毫不相干的 它们具有一定的组织结构 属于同一集合的数据具有相似的特征 2 数据的共享性 在一个单位的各
  • .NET Core使用EF Core框架

    文章目录 概述 安装EF Core 使用EF Core增删改查 单表查询 插入数据 修改数据 删除数据 概述 Entity Framework EF Core 是轻量化 可扩展 开源和跨平台版的常用 Entity Framework 数据访
  • linux的用户和组

    linux是一个多用户 多任务的分时操作系统 windows是一个单用户操作系统 linux系统中的用户类型 1 root 超级管理员 uid 用户ID 0 权限大于Windows中的Administrator 2 系统用户 伪用户 uid
  • panda 修改行名字 报错 Index does not support mutable operations

    在进行panda数据操作 扩充时出现两个tricks 使用data pd append 进行行扩充数据时 行名需要相同 才能实现自动扩充 使用data pd columns 修改行名时 不允许切片操作 只能按照原数据长建立一个列表赋值修改
  • Python从txt文件中逐行读取数据

    非常的简单 提供三种方法 方法一 f open foo txt 返回一个文件对象 line f readline 调用文件的 readline 方法 while line print line 后面跟 将忽略换行符 print line e
  • 如何做好一份前端工程师的简历?

    一 你是前端工程师 虽然简历都会有一些常规信息 但职业决定了这份简历核心内容和求职成败 所以 这份简历应该尽可能体现你自己是一个合格的前端工程师 专业的前端工程师是什么可以看看去年Nate Koechley的演讲 Professional
  • 二叉树相关算法

    二叉树类算法 一 二叉树的路径和 二叉树的每个节点为0 9的一个数字 根到叶子的一条路径拼成一个数 求所有路径形成的数字和 struct TreeNode TreeNode left TreeNode right int value int
  • Ab3d.DXEngine 6.0 Crack 2023

    Ab3d DXEngine 不是另一个游戏引擎 如Unity 它强迫您使用其游戏编辑器 其架构 并且需要许多技巧和窍门才能在标准 Net 应用程序中使用 Ab3d DXEngine 是一个新的渲染引擎 它是从头开始构建的 旨在用于标准桌面
  • 基于yolov5的NEU-NET产品缺陷目标检测

    一 yolov5的使用 1 1 1 YOLOv5的介绍与特点 1 1 2 YOLOv5的基本使用 1 1 3目录结构树 2 二 数据预处理与模型训练 4 2 1 NET NET数据集 4 三 模型评价与分析 8 第一次写 没啥经验 内容的话
  • Spring 自学笔记

    Spring 自学笔记终 前言 Spring全家桶 spring springmvc spring boot spring cloud spring 出现时间2002年左右 解决企业开发难度 作用 减轻对项目模块之间的管理 类和类之间的管理
  • 华为od机考试题-字符串单词首字母转换大小写

    while 1 try nums input split dp f w 0 upper w 1 for w in nums print join dp except Exception as e break
  • 常见哈希算法总结

    目录 哈希算法概述 常见的哈希算法 MD5算法 SHA 1算法 哈希算法的用途 校验下载文件 存储用户密码 Hmac MD5算法 哈希算法概述 哈希算法又称摘要算法 它的作用是 对任意一组输入数据进行计算 得到一个固定长度的输出摘要 哈希算
  • Python编写微信打飞机小游戏(七)

    如果觉得这篇文章对您有所启发 欢迎关注我的公众号 我会尽可能积极和大家交流 谢谢 Python编写微信打飞机小游戏 一 Python编写微信打飞机小游戏 二 Python编写微信打飞机小游戏 三 Python编写微信打飞机小游戏 四 Pyt
  • webpack

    一 是什么 loader 用于对模块的 源代码 进行转换 在 import 或 加载 模块时预处理文件 webpack做的事情 仅仅是分析出各种模块的依赖关系 然后形成资源列表 最终打包生成到指定的文件中 如下图所示 在webpack内部中
  • 保证业务高效运营 专有云虚拟网络是关键

    随着越来越多的企业用户上云 且客户业务场景多种多样的情况下 云计算面临的挑战也越来越多 如企业多 IDC 异地办公区 远程运维人员接入到企业内网需要一致的体验等场景下 还要提供高可靠 安全和易维护的网络能力 我们可以通过组合百度智能云网络模
  • ue4 解决编译保存蓝图时报无法报存资源.uasset错

    当你在打开蓝图时 逻辑没有任何错误 甚至你没有做任何修改 在编译保存时报资源错误 如下图 这时候 你打开任务管理器 在后台进程 你会发现一个在跑的ue进程 结束任务后就可以继续正常的编译保存了
  • 廉价的家用工作站方案:ThinkPad 存储升级及数据迁移

    最近 给当台式服务器一样使用了两年的 ThinkPad 做了存储升级和数据迁移 对硬盘也做了额外的散热处理 本篇文章里 我们分享下相关的经验和思考 希望能够帮助到有同样诉求的你 写在前面 本文的 主角 是一台 7x24 小时使用了两年的 T
  • 【基础篇】关于专栏介绍及ESP32环境搭建(vs code)

    前言 本专栏将会从零到实战的学习ESP32开发 将会持续更新 其中大概包括基础篇 实战篇和提高篇以及一些常见的错误如何解决 一 ESP32介绍 ESP32是 Espressif 开发的一系列低成本 低功耗的片上系统 SoC 微控制器 包括
  • matlab练习程序(模拟退火SA)

    模拟退火首先从某个初始候选解开始 当温度大于0时执行循环 在循环中 通过随机扰动产生一个新的解 然后求得新解和原解之间的能量差 如果差小于0 则采用新解作为当前解 如果差大于0 则采用一个当前温度与能量差成比例的概率来选择是否接受新解 温度
  • 带头结点的头插法和尾插法创建单链表

    首先我们先定义一个链表的结构体 typedef int DataType typedef struct Node DataType data struct Node next SLNode SLnode 定义链表的结构体 因为是带头节点的链