单链表

单链表的创建分为头插入法和尾插入法两种,两者并无本质上的不同,都是利用指针指向下一个结点元素的方式进行逐个创建,只不过使用头插入法最终得到的结果是逆序的。

1.单链表概念&设计

单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。

对于链表的每一个结点,我们使用结构体(struct)进行设计,其主要内容有:

其中,DATA数据元素,可以为你想要储存的任何数据格式,可以是数组,可以是int,甚至可以是结构体(这就是传说中的结构体套结构体)

NEXT为一个指针,其代表了一个可以指向的区域,通常是用来指向下一个结点,链表的尾部NEXT指向NULL(空),因为尾部没有任何可以指向的空间了

故,对于一个单链表的结点定义,可以代码描述成:

2、初始化

同任何的结构,类型一样,链表也需要初始化操作,初始化是创建一个单链表的前置节点并向后逐步添加节点,一般来说,我们所谓的初始化单链表一般指的是申请结点的空间,同时对一个结点辅以空值(NULL),其代码可以表示为:

在这里我们有一个注意点,就是一定要记住判断是否开辟空间失败,虽然在很多试题中以及常用的环境提供的环境非常安全,几乎没有开辟失败的存在,但是也一定要养成判断是否开辟失败并且判断失败后执行代码,但在生产中由于未知的情况造成一旦空间开辟失败任然在继续执行代码,后果将不堪设想,因此养成这样的判断是很有必要的,在C++中可以使用try-catch这样的语句进行优化。

3.创建单链表(头插入法)

在初始化之后,就可以着手开始创建单链表了,单链表的创建分为头插入法和尾插入法两种,两者并无本质上的不同,都是利用指针指向下一个结点元素的方式进行逐个创建,只不过使用头插入法最终得到的结果是逆序的。

如图,为头插法的创建过程:

该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后。

4.创建单链表(尾插入法)

如图,为尾插入法的创建过程。

头插法建立单链表的算法虽然简单,但生成的链表中结点的次序和输入数据的顺序不一致。若希望两者次序一致,可采用尾插法。

该方法是将新结点逐个插入到当前链表的表尾上,为此必须增加一个尾指针 r, 使其始终指向当前链表的尾结点,否则就无法正确的表达链表。

access表怎么生成表结构_数据结构——单链表讲解相关推荐

  1. java单链表存储结构_Java数据结构——单链表

    单链式存储线性列表 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的 (图片来自网络,侵删) 存储单元由两部分组成,数据源和指针,数据源 ...

  2. java链式结构_(Java)单链表Java语言链式结构实现(数据结构四)

    1.迭代器接口实现 package com.zhaochao; public interface Iterator { boolean hasNext(); E next(); boolean del ...

  3. 求单链表的最大值与原地逆转_数据结构:单链表中求最大值的算法。

    可以参考下面的代码: public static int FindMax(Node head) { if (head == null) return 0; int Max = head.value; ...

  4. 单链表的基本操作_数据结构-单链表的基本操作

    typedef int ElemType;typedef struct LNode *PtrToNode; struct LNode {ElemType Data;PtrToNode Next; }; ...

  5. php链表和联表的区别,PHP_浅谈PHP链表数据结构(单链表),链表:是一个有序的列表,但 - phpStudy...

    浅谈PHP链表数据结构(单链表) 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个 ...

  6. 数据结构C语言实现系列——线性表(线性表链接存储(单链表))

    #include <stdio.h> #include <stdlib.h> #define NN 12 #define MM 20 typedef int elemType ...

  7. 6-4 链表拼接 (20分)_数据结构之链表

    在面试过程中,数据结构和算法基本上算是研发类岗位必考的部分,而链表基本上又是数据结构中相对容易掌握.而且容易出题的部分,因此我们先整理一下链表部分的经典题目. (声明:以下所有程序都是用java编写) ...

  8. php mysql 链表_浅谈PHP链表数据结构(单链表)

    链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区, ...

  9. python 单链表是否有回路_(Python3)数据结构--单链表之判断链表是否有环

    前言 有Python基础 有数据结构单链表基础,没接触过的可以看下面链接 https://blog.csdn.net/sf9898/article/details/104946291 原理和实现 有一 ...

最新文章

  1. 【面试题】如何设计一个高并发的系统?
  2. android 键盘只顶edittext,EditText Keyboard 未解之谜
  3. 在CentOS6.8下安装Docker
  4. Centos6搭建SkyWalking 做分布式跟踪
  5. 第五周软件工程作业-每周例行报告
  6. 美国凯斯西储大学计算机硕士专业怎么样,在凯斯西储大学读硕士大约需要多少花费?...
  7. OpenShift 4 - 对镜像进行合规扫描,加固应用镜像安全
  8. 树莓派4b安装windows iot_树莓派4B基于python3安装opencv4全教程
  9. 40岁了,突然公司黄了,怎么办?
  10. 简述中断和 DMA 的区别。
  11. 微服务鉴权_百度技术架构师总结:微服务架构之访问安全
  12. JAVA毕业设计婚纱摄影网设计计算机源码+lw文档+系统+调试部署+数据库
  13. 基于单片机的电子秤(数码管)系统设计(#0416)
  14. 虚幻4引擎虚拟现实项目制作教程
  15. 误差传递公式(law of propagation of uncertainties)
  16. CSS里的BFC和IFC的用法
  17. Verilog编程之道 - Verilog语言特性
  18. 基础为零?如何将 C++ 编译成 WebAssembly
  19. 斐讯n1刷鸿蒙系统,【总结】在N1上面成功刷入armbian并启动的步骤
  20. 练习-Java循环综合练习一之住房贷款还款计算

热门文章

  1. android canvas_Android自定义View之绘制虚线
  2. 什么是 Linux 安全基线?
  3. 洞悉linux下的Netfilteriptables
  4. 小明分享:Esp32下softAP+tcp_server的简单实现
  5. 用启明云端基于ESP32模块的开发板来快速了解天猫精灵
  6. python opencv源码_caffegpu源码编译
  7. python svn模块_使用Python实现一键批量更新SVN/Git模块的脚本
  8. 杭州电子科技大学保研计算机,杭州电子科技大学计算机学院软件工程(专业学位)保研条件...
  9. centos5.6安装mysql_centos安装mysql5.6的正确姿态
  10. c++ map 析构函数_说说C++的虚析构函数