链表(Linked List)是由一连串的结构(称为结点)组成的,其中每个结点都包含指向链中下一个结点的指针。

链表中的最后一个结点包含一个空指针。

链表与数组不同,数组的线性序是由数组的下标决定的,而链表中的顺序是由各结点的指针域所决定的。

链表可以灵活地表示动态集合。 采用链表表示线性表,无论向表中插入或删除元素,都不需要移动数据。

与顺序表示法不同,链表的结点不再是连续且等距离地存放在一块存储区域,相反,结点可以存放在存储区的任何位置。

单向链表中的结点至少有一个指针域。 其中结点的个数可以是0或多个,当结点个数为0时,称为空链表。如果链表不为空,则第一个结点指向第2个, 第2个结点指向第3个,,,,,构成线性表。链中最后一个结点的指针域为0(表示NULL指针)。

声明结点类型。为了建立链表,首先需要一个表示链表中单个结点的结构、

//结点结构描述
struct node{int value;node *next;       //指向下一个结点的指针
}; 

我们需要记录链表开始的位置,即需要有一个始终指向链表中第一个结点的变量,我们把此变量命名为first:      node * first = NULL;

first = NULL, 表示不指向任何存储区域,即这个链表为空。

//判断链表为空的函数
bool is_empty(node *first)
{return !first;
} 

在构建链表时,需要逐个创建结点,并且把生成的每个结点加入到链表中。创建结点包括三个步骤:

1、为结点分配内存单元;

2、把数据存储到结点中;

3、把结点插入到链表中。

为了创建结点,需要一个变量临时指向该结点,假设此变量为new_node: node *new_node = new node();

//在堆内存中分配一个能够存放该结构的内存区域,并返回获得的内存区域的首地址,赋给new_node指针。

//例如
new_node->value = 25;
new_node->next = NULL; 

在链表的开始出插入结点。如果new_node指向要插入的结点,first指向链表的首结点。为了把该结点插入链表的首部,需要两条语句。

首先,修改该结点的成员next,使其指向先前在链表开始处的结点: new_node->next = first;

然后,使first指向新结点:  first = new_node;

在链表的首部插入结点的函数add_to_list,有两个形式参数: list(指向链表中首结点的指针),n(需要存储在新结点中的整数)。

node *add_to_list(node *list, int n)
{node *temp = new node ;temp->value = n;temp->next = list;return temp;
}
//例如:first = add_to_list(first,20);

转载于:https://www.cnblogs.com/Tovi/p/6194870.html

数据结构_链表_单向链表相关推荐

  1. node 获取表单数据 为空_数据结构与算法(python)单向链表篇

    链表 数据表的构建需要预先知道数据的大小来申请连续的存储空间, 而在进行扩充的时候又需要进行数据的搬迁, 使用起来不是很灵活. 链表结构可以充分利用计算机内存空间, 实现灵活的内存动态管理. 简单来说 ...

  2. c++ 链表_链表(单向链表的建立、删除、插入、打印)

    线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构 非线性结构:不满足线性结构的数据结构 链表(单向链表的建立.删除.插入.打印) 1.链表一般分为: 单向链表 双 ...

  3. python创建链表实例_python数据结构链表之单向链表(实例讲解)

    python数据结构链表之单向链表(实例讲解) 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后 ...

  4. C语言之链表:单向链表,循环链表,双向链表

    C语言之链表:单向链表,循环链表,双向链表 提起链式存储结构,其与数组是两个非常基础的数据结构,每当提到链式存储结构时,一般情况下我们都会将其与数组放到一块儿来比较. 对于数组与链表,从结构上来看,数 ...

  5. java 快速从树节点找到数据_数据结构与算法:单向链表和双向链表

    一.链表简介 1.链表概念 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列节点组成,节点可以在运行时动态生成,节点包括两个部分:一个 ...

  6. 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表

    L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...

  7. 数据结构与算法java - 03 链表,单向链表,逆序打印单向链表

    链表 Linked List 有序 链表是以节点的方式来存储,链式存储 每个节点包含 data 域, next 域:指向下一个节点 链表的各个节点不一定是连续存放 链表分带头节点的链表和没有头节点的链 ...

  8. python数据结构与算法:单向链表

    单链表:python实现及其对应的 增删查检 操作 ##################### P4.1-P4.8 单向链表 ########################### #coding:u ...

  9. 数据结构一:链表(单向链表)

    一:需求分析 不连续内存空间,单向链表,有头结点,插入,删除,查找,获得链表长度,返回第一个结点,回调打印,释放内存 二:代码 LinkList.h #ifndef _LINKLIST_H_ #def ...

  10. 数据结构链表之单向链表:Python3 实现单向链表——1

    Python3 实现单向链表 链表定义与简介 定义:链表与顺序表(Python中列表)性质相反,链表是物理单元上非顺序的.非连续的,在逻辑顺序上其数据元素是通过指针实现的,组成链表的每一个元素也可以叫 ...

最新文章

  1. 如何禁用文本选择突出显示
  2. 如何一站式快速构建企业全场景数据库管理平台?
  3. 互联网拥塞控制终极指南
  4. 芯片巨头英特尔放弃竞争迷你计算机市场
  5. 2018 Multi-University Training Contest 1 Balanced Sequence(贪心)
  6. linux 获取本机的所有IP地址
  7. nginx rewrite 实现二级域名跳转
  8. linux之pkill命令
  9. Linux scp连接很慢,ssh连接很慢问题分析
  10. C# 电子签章的实现
  11. SVN下载安装及入门使用教程_win10_64位
  12. 【现代卫星导航系统】之北斗卫星导航系统
  13. 用Python批量生成字幕图片用于视频剪辑
  14. 有生之年转ta系列 美术部分 1.1 美术理论基础
  15. 使用Hibernate中save方法时由于设置的id的增长方式为assigned报错处理和
  16. Win10系统下配置virtualenv
  17. 【人脸属性分类】Deep Multi-task Multi-label CNN for Effective Facial Attribute Classification(FAC)
  18. 物联网项目开发编程语言一览
  19. linux驱动21:内核创建类class_create
  20. 【web项目】前端生日礼物--clock篇

热门文章

  1. wpf ui框架_.NET跨平台框架Avalonia UI
  2. u-boot移植随笔:System.map文件格式
  3. vue-cli目录结构介绍
  4. 软件测试转行月薪过万,那些转行软件测试的新手小白,是如何从月薪5000到月薪2万的?...
  5. 【Flink】Flink 1.12.2 SlotManager
  6. 【kafka】flink 发送 数据到 kafka 报错 Memory records is not writable
  7. 【es】es 分布式一致性原理剖析(三)-Data篇
  8. 【kafka】kafka jmx docker 容器下 跨容器连接 没有到主机的路由 host unreachable
  9. 【Java】Java 集合 可视化 在线演示 环境
  10. 【Kafka】kafka zk下注册的信息 get /brokers/ids/1 “host“:null “port“:-1