头插法和尾插法建立单链表

2023-11-08

在进行单链表的基本运算之前必须先建立单链表,建立单链表的常用方法有两种:头插法建表和尾插法建表

头插法建表,从一个空表开始,读取字符数组a中的字符,生成新节点,将读取的数据存放到新节点的数据域中,然后将新节点插入到当前链表的表头上,直到读完字符数组a的所有元素为止。

头插法建表虽然简单,但生成的链表中节点的次序和原数组的次序相反,若希望两者的次序一致,可采用尾插法建立

 

尾插法建表,该算法是将新节点插到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾节点

 

#include <stdio.h>
#include<iostream>
#include<string>
using namespace std;
typedef int ElemType;
typedef struct LNode{
   ElemType data;  //存放元素值
   struct LNode *next;//指针域指向后继结点
}LinkList;
//头插法建表
void CreateListHead(LinkList *&L,ElemType a[],int n){
	LinkList *s;
	L=(LinkList *)malloc(sizeof(LinkList));//创建头结点
	L->next=NULL;   //将头结点next域置空
	for(int i=0;i<n;i++){   //循环建立数据结点
		//创建数据结点*s
	    s=(LinkList *)malloc(sizeof(LinkList));
		//将结点s插在原开始节点之前,头结点之后
		s->data=a[i];
		s->next=L->next;
		L->next=s;
	}
}
//尾插法建表
void CreateListTail(LinkList *&L,ElemType a[],int n){
    LinkList *s,*r;
	L=(LinkList *)malloc(sizeof(LinkList));//创建头结点
	r=L;//r始终指向尾结点,开始时头结点和尾结点是同一个
	for(int i=0;i<n;i++){
	  s=(LinkList *)malloc(sizeof(LinkList));//创建数据结点
	  s->data=a[i];//数据域
	  r->next=s;//将s插入到r后
	  r=s;//使r指向尾结点
	}
	r->next=NULL;//尾指针指针域置空

}
//输出
void DispList(LinkList *L){
	LinkList *p=L->next;//p指向开始结点
	while(p!=NULL){
		cout<<p->data<<" "; //输出数据域
		p=p->next;
	}
	cout<<endl;
}
int main(){
    LinkList *L;
	int n;
	cout<<"n:";
	cin>>n;
	int *a=new int(n);
	for(int i=0;i<n;i++){
	  cin>>a[i];
	}
	//头插法建表
	CreateListHead(L,a,n);	
	cout<<"头插法建表:";
	DispList(L);//输出

	//尾插法建表
	CreateListTail(L,a,n);	
	cout<<"尾插法建表:";
	DispList(L);//输出
}

 

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

头插法和尾插法建立单链表 的相关文章

  • 关于stm32下载提示internal command error错误提示解决办法

    问题背景 最近新制作了一个关于stm32的PCB PCB电源供电是由12V降压5V 再降压到3 3V 并且预留了3 3V电源接口 打样贴片完成后准备下载程序 一开始我是为了测试方便 没有用12V供电 直接连接stlink 并且用了电脑5V降
  • 高效大数据开发之 bitmap 思想的应用

    作者 xmxiong PCG 运营开发工程师 数据仓库的数据统计 可以归纳为三类 增量类 累计类 留存类 而累计类又分为历史至今的累计与最近一段时间内的累计 比如滚动月活跃天 滚动周活跃天 最近 N 天消费情况等 借助 bitmap 思想统
  • mysql主从配置问题汇总及如何查看数据库的日志

    一 Could not execute Delete rows event on table yxjmanage ums user Can t find record in ums user Error code 1032 handler
  • 原生ajax运行原理,【前端自学之路】JS之原生AJAX原理

    Javascript Ajax 原理 什么是 AJAX AJAX Asynchronous JavaScript and XML 异步Javascript 和 XML AJAX 是指一种创建动态网页的开发技术 说白话点 AJAX 就是允许J
  • Android常见问题debug

    android util Log 常用的方法有以下5个 Log v Log d Log i Log w Log e 根据首字母对应 VERBOSE DEBUG INFO WARN ERROR 另外 Log太多时用来过滤和标识分类log信息
  • Git简单入门(学习笔记)

    Git简单入门 学习笔记 目录 一 Git概念 二 版本控制 三 Git下载与安装 四 Git结构 五 本地库与远程库的交互方式 六 代码托管中心 七 初始化本地仓库 一 Git概念 Git是一个免费的开源的分布式版本控制系统 可以快速高效
  • python在线评测系统_关于开源OJ_在线评测系统(Online Judge)设计与实现的研究与分析...

    标签 OJ是Online Judge系统的简称 用来在线检测程序源代码的正确性 著名的OJ有TYVJ RQNOJ URAL等 国内著名的题库有北京大学题库 浙江大学题库 电子科技大学题库 杭州电子科技大学等 国外的题库包括乌拉尔大学 瓦拉杜
  • LVS 之 集群搭建

    官网地址 http www linuxvirtualserver org zh lvs1 html 首先 准备4台虚拟机 一个用于客户端 一个用于LVS 调度器 2个用于后端服务器 LVS NAT配置 1 zk02 开启内核的核心转发功能
  • 在Python中使用StanfordOpenIE

    本文在 维基百科数据预处理的基础上进行 1 StanfordOpenIE简介 开放信息提取 open IE 是指从纯文本中提取关系元组 通常是二元关系 例如 Mark Zuckerberg 脸书 与其他信息提取的核心区别在于 这些关系的模式
  • mysql配置和使用中可能会出现的若干问题

    Manually delete the data folder created by yourself 删除自行创建的data文件夹 Then enter the bin directory under the administrator
  • QT应用开发基础

    目录 前言 Windows上搭建开发环境 C 基础 什么是C 什么是面向对象 什么又是面向过程 c 的灵魂 c 的类 对象 类的实例化 怎么访问类的成员 类的函数成员 类的访问修饰符 函数的重载 构造函数和析构函数 类的继承 虚函数和纯虚函
  • Android Studio 的NotePad制作(日志本)

    自己写的NotePad 一个星期左右的时间 完成了最基本的功能 但是 界面还是一如既往的shi 因为百度找的图标都不是那种成套的 想找的找不到 干脆下次自己画 NotePad的功能无非是对日志的增删改查 这次还加入了Preference的一
  • java零基础从入门到精通(全)

    目录 前言 1 入门知识 1 1 JDK JRE JVM区别 1 2 编译与运行理解 1 3 类体函数细节 2 语法 2 1 标识符与关键字 2 2 变量与数据类型 2 3 控制语句 3 方法 3 1 定义 3 2 方法重载 3 3 方法递

随机推荐

  • electron开发环境搭建

    开发环境 Node js Vscode vscode安装Debugger for Chrome 创建开发目录 也是解决方案 执行初始化命令 创建electronpicture工程 并添加main js和index html文件 npm in
  • 存储器容量、位宽及其地址线根数三者之间的关系

    转载于 http blog sina com cn s blog 498dc96f0100gc2r html 1 存储器 Flash ROM SST39VF1601 数据位宽为16位 16根数据线 20根地址线 2M 1M 16bit SD
  • PID算法(一)PID简介

    PID算法简介及实现代码 PID简介 智能车比赛中 用到了PID算法 写下来当一个总结 PID是很经典且应用很广泛的控制算法 依据误差来减少误差 PID PID分为三部分 P 比例 P增大 可以加快系统响应速度 但是不能从根本上消除静态误差
  • 搭建ChatGPT对话式小说

    牙叔教程 简单易懂 你只需要写一个开头 剩下的交给ChatGPT 视频查看效果 两个ChatGPT互聊 写小说 哔哩哔哩 bilibili 这是一种ChatGPT的展现方式 他把你主动问ChatGPT的这种方式 改为了ChatGPT和Cha
  • 双指针算法(acwing)疑难讲解

    相信大家都是看完y总的课来看博客解惑的我会在这里分享一些我理解的细节 回顾一下题目 直接上代码 include
  • VUE element-ui之百度OCR证件识别,组件内证件照转码解码识别身份证照文字

    步骤 接上一篇博文继续完善获取access token 封装Base64照片转码方法 const identification 将图片转为base64格式 transformBase64 file return new Promise re
  • 毕业设计-基于 MATLAB 的小波去噪的研究

    目录 前言 课题背景和意义 实现技术思路 一 小波理论 二 小波去噪原理 三 去噪实验仿真 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各
  • 表的内连接、外连接(左连接与右连接)

    内连接 利用内连接可获取两表的公共部分的记录 语句如下 Select from A JOIN B ON A Aid B Bid 外连接 外连接分为两种 一种是左连接 Left JOIN 和右连接 Right JOIN 1 左连接 Left
  • latex公式对齐方式详解

    符号和 控制公式左对齐 对齐结果如下 begin array 控制公式对齐 begin array 是什么 begin array 是LaTeX中用于创建数学数组 math array 的环境 它可以用于在数学模式下创建一个由多行多列组成的
  • golang web开发

    目录 文章目录 前言 一 golang web是什么 二 搭建流程 1 模块划分 2 详细开发步骤 总结 前言 例如 习惯了java springboot 开发方式 比较疑惑golang web开发的流程和模块化的区分 就golang we
  • 2023最新大数据毕业设计项目推荐

    文章目录 0 前言 1 如何选题 1 1 选题技巧 如何避坑 重中之重 1 2 为什么这么说呢 1 3 难度把控 1 4 题目名称 1 5 最后 2 大数据 选题推荐 2 1 大数据挖掘类 2 2 大数据处理 云计算 区块链 毕设选题 2
  • 微信小程序开发,小程序类目符合,线上版本无权限申请wx.getLocation接口

    我开发 的小程序类目符合wx getLocation接口的申请标准 但是却还是显示无权限申请 后来研究好久才发现 小程序需要在发布线上版本时提交用户隐私保护指引 如未设置也可以在 设置 服务内容声明 用户隐私保护指引 声明处理用户信息项并补
  • 电源芯片MP1584,LM2596,XL1509性能对比

    MP1584耐压只有28V 标称3A输出电流 实测2A发热但是没有问题 再大了发热太严重 估计2A以内放心用 29V输入加上负载芯片就坏了 得益于它的高频开关优势 电感尺寸可以小一点 空载时电流很小 只有0 37mA 空载或轻负载时候 输出
  • Ubuntu18.04安装gpu版本libtorch1.3.1

    安装libtorch X86平台直接下载官方编译的版本 解压后可直接用 arm平台需要下载源码编译 libtorch库的安装参考 https pytorch org cppdocs installing html 下载 libtorch c
  • JavaScript内置对象相关案例

    山不向我走来 我便向它走去 下列案例相关内置对象及其方法的详细用法可点击查看此处 JS之内置对象 数学对象案例 案例一 封装自己的数学对象 利用对象封装自己的数学对象里面有PI 最大值和最小值 var myMath PI 3 14 max
  • Python实现,给定正整数n、a,求最大的k,使n的阶乘可以被a^k整除但不能被a^(k+1)整除。‪‬‪‬‪‬‪‬‪‬

    废话不多说 直接上代码 方法一 n a eval input m 1 for i in range 1 n 1 m m i for k in range 1 n ak a k aj a k 1 if m ak 0 and m aj 0 br
  • 表单提交get/post,提交文件

    1 表单提交数据GET POST方法 GET数据 form表单提交的时候 提交方式是get 数据在url进行传输 例如 http 127 0 0 1 php 13get php username 18595907951 sex 女 只能提交
  • CAN矩阵(入门篇)(史上最全)

    CAN矩阵 ADAS CAN矩阵 JM相机CAN矩阵 CAN消息及信号的含义 CAN消息解析 实际值 十进制 Factor Offset 实车上如何利用该CAN消息 JM相机CAN消息利用分为以下几个部分 车道线点适配 车道线识别状态适配
  • 15.图像拼接

    目录 1 项目介绍 2 代码实现 2 1 ImageStiching 2 2 Stitcher 2 2 1 cv show 2 2 2 stitch 2 2 3 detectAndDescribe 2 2 4 stitch 2 2 5 ma
  • 头插法和尾插法建立单链表

    在进行单链表的基本运算之前必须先建立单链表 建立单链表的常用方法有两种 头插法建表和尾插法建表 头插法建表 从一个空表开始 读取字符数组a中的字符 生成新节点 将读取的数据存放到新节点的数据域中 然后将新节点插入到当前链表的表头上 直到读完