9-数据结构-单链表头插法尾插法

2023-11-11

问题:

单链表头插法与尾插法

思路:

  1. 头插法,类似于前面的在末位置前,插入元素。最后创建完为逆序;
  2. 尾插法,则是定一个尾指针r,每次接入新的结点s,随后r=s(即r往后移位)

详解:

头插法:

  1. 先初始化链表l——l=(linklist)malloc(sizeof(lnode));  l->next=NULL;
  2. 定义一个暂存结点用来一直插入元素,接进链中。——lnode*s。
  3. 随后定义插入数据x
  4. 进入循环,当输入x=9999时,循环结束
  5. 初始化s
  6. 随后进行后插操作,s->data=x;s->next=l->next;l->next=s;
  7. 之后再输入x
  8. 这样创建的链表就是逆序的链表了,可以1用来做逆序题目;

尾插法:

  1. 先初始化链表l——l=(linklist)malloc(sizeof(lnode));  l->next=NULL;
  2. 定义一个暂存结点用来一直插入元素,接进链中。——lnode*s。
  3. 定义一个尾指针r,用来表示链表的尾部
  4. 让尾指针r=l,就算真正接进l链表中了。
  5. 随后一样的操作输入x,进入循环
  6. 循环中,初始化s
  7. 给s数据域赋值——s->data=x;
  8. 让尾指针r指向s,连接起来——r->next=s;
  9. 随后移动r尾指针的位置到s结点中——r=s;达到位移目的。

代码如下:

头插法:

linklist tcreatlist(linklist &l,int &len)
{
	l=(linklist)malloc(sizeof(lnode));
	l->next=NULL;
	lnode *s;
	int x;
	printf("请输入所需添加的数据,输入9999结束输入\n");
	scanf("%d",&x);
	while(x!=9999)
	{
		len++;
		s=(lnode*)malloc(sizeof(lnode));
		s->data=x;
		s->next=l->next;
		l->next=s;
		scanf("%d",&x);
	} 
	return l;
}

尾插法:

linklist wcreatlist(linklist &l,int &len)//尾插法 
{
	l=(linklist)malloc(sizeof(lnode));
	l->next=NULL;
	lnode *s;
	lnode *r=l;
	int x;
	printf("请输入所需添加的数据\n");
	scanf("%d",&x);
	while(x!=9999)
	{	len++;//计算链表长度 
		s=(lnode*)malloc(sizeof(lnode));
		s->data=x;
		r->next=s;
		r=s;
		scanf("%d",&x);	
	} 
	r->next=NULL; 
	return l;
}

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

9-数据结构-单链表头插法尾插法 的相关文章

随机推荐

  • String-字符串替换

    例子 原始字符串 String demo aback 文章目录 一 replace 字符或者字符串替换 1 使用方法 2 源码 二 replaceAll 多个正则替换 1 使用方法 2 源码 三 replaceFirst 首次出现替换 1
  • 移动端兼容宝典大全,专治各种不适

    古人学问遗无力 少壮功夫老始成 移动端兼容宝典大全 专治各种不适 你是否也曾为浏览器各种的不兼容而苦恼 尤其是IE这个牛皮癣 这篇文章可能会给你帮助哦 常码字不易 出精品更难 没有特别幸运 那么请先特别努力 别因为懒惰而失败 还矫情地将原因
  • 小程序调整文章正文样式:

    1 官网地址 npm install github markdown css 2 案例 右键 gt 另存为 gt 导入 使用css文件 引入的css已markdown body的class名开头 适配时禁止github markdown转换
  • Openlayers API-Select点击要素图层

    Select是交互事件中的一种 用于选择矢量图层上的几何图形 添加选择交互事件后 点击地图上的几何图形或者将鼠标移动到几何图形上时 将获取到几何图形的相关信息 我们可以将选择的几何图形进行高亮显示 使用起来很简单 首先创建一个Select对
  • Xcode MacOS与clang c++版本关系

    关于clang https en wikipedia org wiki Clang 7 September 2017 Clang 5 0 0 released 19 January 2018 Clang becomes default co
  • QT系列第2节 QT中元对象系统

    QT是在标准C 上进行了扩展 所以就有自己的特性 其中元对象系统就是其一 元对象系统有点类似于java和go语言中的反射 让我们在编程时解决问题多了些方法和思路 关于元对象可以简单总结出以下内容项 目录 一 元对象要点总结 二 示例代码 一
  • SVN的常见用法

    3 发生冲突后 执行 更新 操作后 对于发生冲突的文件 SVN会加上冲突标记 冲突解决 Tortoise 编辑冲突 找到这个文件 右键选择Edit conflicts 按钮 弹出编辑冲突的界面 手工将前一版本中的修改整合到自己的文件中 选择
  • apache2.4+php5.4 安装配置

    尝试一个新东西有时候会遇到很多问题 apache2 4 php5 4 安装完成后 记录下解决的办法 1 安装apache2 4需要 microsoft visual C 2010 x86 运行库 2 apache2 4 加载php5 4 需
  • 连接oracle出现ORA-12514错误

    1 PL SQL连接oracle出现ORA 12514错误 注意看图中画出的重点 2 java 连接的时候报错 连接URL option url jdbc oracle thin 47 97 11 138 1522 XE java sql
  • gitlab合并不同分支的(二)种方法 git merge 分支

    gitlab分支 git merge 合并 文章目录 gitlab分支 git merge 合并 前言 一 第一种gitlab工具合并的方法 二 代码提交进行合并 总结 前言 提示 遇到的问题 以前在公司的开发 多人开发的时候是在统一个 m
  • 微信小程序 -- ios 底部小黑条安全距离兼容解决方案(转载)

    在苹果 iPhoneX iPhone XR等设备上 可以看到物理Home键被取消 改为底部小黑条替代home键功能 微信小程序和 h5 网页需要针对这种情况进行适配 否则可能会遇到底部按钮或选项卡栏与底部黑线重叠的情况 如下图 在微信小程序
  • 原来还有linux kernel api

    linux kernel api http www gnugeneration com books linux 2 6 20 kernel api 居然有人将linux kernel api给列出来了 这样编写驱动程序就是和编写普通程序一样
  • 区块链行业前景还好吗?区块链技术有没有经过时间的检验?

    一直有人在发问 被各种科技大佬们炒得那么火热的区块链技术 说到底 跟我们普通的 市井小民 有什么切身的关系利益吗 各位大佬们一口一个 改变未来 革命未来 未来又在哪里 各种吃瓜群众们还在观望的时候 区块链行业的小伙伴们 已经将区块链技术慢慢
  • Java:数值-字符串转换(String转Double)

    代码如下 String ss 3 141592653 double value Double valueOf ss toString
  • 【JavaScript——牛客网算法No.HJ26】字符串排序(字符串里英文字母按字典顺序重新排列,其他字符保持原位)附:详细排坑经历

    No HJ26 字符串排序 problem description 编写一个程序 将输入字符串中的字符按如下规则排序 规则 1 英文字母从 A 到 Z 排列 不区分大小写 如 输入 Type 输出 epTy 规则 2 同一个英文字母的大小写
  • 4.1.3.1Spring源码解析——createBean方法细节之doCreateBean

    先贴代码 doCreateBean方法位于AbstractAutowireCapableBeanFactory方法中 前面已经解析了CreateBean方法 可以点这里传送CreateBean方法解析 protected Object do
  • 剖析算法:解决问题的艺术

    前言 一 实战中的精选算法 工作和学习的无法替代的助手 1 1 效率之王 排序算法 如快速排序和归并排序 1 2 寻路之魔 图算法 如 Dijkstra 算法和贝尔曼 福特算法 1 3 问题解决之神 动态规划算法在复杂问题中的应用 1 4
  • 张量(二):张量分解(tensor decomposition)

    与矩阵分解一样 我们希望通过张量分解去提取原数据中所隐藏的信息或主要成分 当前主流的张量分解方法有CP分解 Tucker分解 t SVD分解等 更新的方法大多是在他们的基础上做进一步的改进或引用 因此 张量分解也是张量算法的基础 下面分别做
  • python 线程池使用

    前段时间发现了一个 人工智能学习网站 通俗易懂 风趣幽默 分享一下给大家 学习链接 文章目录 线程池使用 1 线程池介绍 2 使用方法 2 1 threadpool 2 2 ThreadPoolExecutor submit as comp
  • 9-数据结构-单链表头插法尾插法

    问题 单链表头插法与尾插法 思路 头插法 类似于前面的在末位置前 插入元素 最后创建完为逆序 尾插法 则是定一个尾指针r 每次接入新的结点s 随后r s 即r往后移位 详解 头插法 先初始化链表l l linklist malloc siz