返回顶部
首页 > 资讯 > 精选 >互联网中链表是一种采用什么存储结构存储的线性表
  • 315
分享到

互联网中链表是一种采用什么存储结构存储的线性表

2023-06-25 17:06:38 315人浏览 独家记忆
摘要

这篇文章主要介绍互联网中链表是一种采用什么存储结构存储的线性表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!链表是一种采用“链式”存储结构存储的线性表。链表的数据元素所占的存储单元地址可以是连续的,也可以是不连续的,

这篇文章主要介绍互联网链表是一种采用什么存储结构存储的线性表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

链表是一种采用“链式”存储结构存储的线性表。链表的数据元素所占的存储单元地址可以是连续的,也可以是不连续的,可根据需要临时、动态地申请分配相应的存储空间,数据元素之间的逻辑关系可以用“链”来表达。

教程操作环境:windows7系统、Dell G3电脑。

为了克服顺序表存储结构的缺点,充分利用存储空间和提高运行效率,线性表可以采用另一种存储结构——链式存储结构线性表的链式存储结构简称“链表(link list)”

一、链表概述

链表的数据元素所占的存储单元地址可以是连续的,也可以是不连续的,可根据需要临时、动态地申请分配相应的存储空间,数据元素之间的逻辑关系可以用“链”来表达。

链表的插入和删除不需要移动数据元素,只需要修改链即可实现。

链表分类:

按链表内存分配实现的方式分类

①动态链表

②静态链表

按链接方式分类

①单链表

②循环链表

③双链表

(它们均为动态链表)

二、单链表的定义

1.定义

为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对于每个数据元素ai,除了存储本身的信息外,还需要存储一个指示其直接后继的信息(后继的存储位置-地址)。

存储数据元素信息的域称为数据域,存储直接后继位置的域称为指针域,指针域中存储的信息称为指针或链。

这两部分信息组成数据元素ai的存储映像,称为结点

n个结点链成一个链表,即为线性表(a1,a2,a3,...,an)的链式存储结构,因为链表的每个结点中只包含一个指针域,所以称为链表

对于线性表来说,总有个头有个尾,链表也不例外。链表中指向单链表第一个结点的指针叫做头指针,整个链表的存取必须从头指针开始进行,之后的每个结点都是上个结点的后继指针指向的位置。链表的最后一个结点的指针为“(通常用NULL表示)”——空指针。

为了方便实现链表的各种运算,在单链表的第一个数据结点之前设一个类型相同的结点,该结点称为头结点。

头结点的数据域可以存储一个特殊的标志信息如链表的长度,也可以不存储任何数据。

链表的第一个数据结点和最后一个结点又称为首结点和尾结点

互联网中链表是一种采用什么存储结构存储的线性表

2.头指针和头结点的异同点

头指针:

  • 头指针是指链表中指向第一个结点的指针,若链表有头结点,则是指向头结点的指针。

  • 头指针具有标识作用,常用头指针冠以链表的名字。

  • 无论链表是否为空,头指针均不为空。头指针是链表的必要元素。

头结点:

  • 头结点是为了操作的统一和方便而设立的,放在第一个元素的结点之前,其数据域一般无意。

  • 有了头结点,对在第一元素结点前插入结点和删除第一个结点,其操作与其他结点的操作就统一了。

  • 头结点不一定是链表必须要素。

3.代码演示

typedef struct node{    ElemType data;    struct Node *next;}Node;typedef struct Node *LinkList;

互联网中链表是一种采用什么存储结构存储的线性表

三、单链表的操作

1.插入操作

1)插入模拟

假设存储元素e的结点为s,将s插入到ai结点后面,如何操作?

互联网中链表是一种采用什么存储结构存储的线性表

思考:两句插入代码能否交换?

不能,如果调换过来,会导致ai+1等后面的元素无法找到,因为s的指针域没有指向ai+1的地址。

2)单链表第i个数据插入结点的算法思路

  • 声明一个结点p指向链表的第一个结点,初始化j=1;

  • 当j<i时,遍历链表,让p的指针向后移动,不断指向下一个结点,j++;

  • 若到链表末尾p为空,则说明第i个元素不存在;若查找成功,生成一个空节点s(使用malloc函数)

  • 将数据元素e赋值給s->data,即为s->data=e;

  • 插入标准语句:s->next=p->next;p->next=s;

  • 返回成功。

2.删除操作

1)删除模拟

假设存储元素ai的结点为q,要实现将结点q删除单链表的操作。

互联网中链表是一种采用什么存储结构存储的线性表

2)单链表删除第i个数据结点的算法思路

  • 声明一个结点p指向链表的第一个结点,初始化j=1;

  • 当j<i时,遍历链表,让p的指针向后移动,不断指向下一个结点,j++;

  • 若到链表末尾p为空,则说明第i个元素不存在;若查找成功,将删除结点p->next赋值給q

  • 插入标准语句:p->next=q->next;

  • 将q结点赋值給e,即为e=q->data;

  • 释放q结点

  • 返回成功。

四、单链表结构和顺序表结构对比

存储方式:

  • 顺序表用一段连续的存储单元依次存储线性表中的数据元素

  • 单链表采用链式存储结构,用一组任意的存储单元存放线性表元素

时间性能:

①查找

  • 顺序表O(1)

  • 单链表O(n)

②插入和删除

  • 顺序表O(n)

  • 单链表O(1)

空间性能:

  • 顺序表需要预分配存储空间,分大了,浪费,分小了易发生上溢

  • 单链表不需要预分配存储空间,需要多少都可以分配,元素个数不受限制

以上是“互联网中链表是一种采用什么存储结构存储的线性表”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 互联网中链表是一种采用什么存储结构存储的线性表

本文链接: https://lsjlt.com/news/306176.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 互联网中链表是一种采用什么存储结构存储的线性表
    这篇文章主要介绍互联网中链表是一种采用什么存储结构存储的线性表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!链表是一种采用“链式”存储结构存储的线性表。链表的数据元素所占的存储单元地址可以是连续的,也可以是不连续的,...
    99+
    2023-06-25
  • java中线性表的存储结构是什么
    今天就跟大家聊聊有关java中线性表的存储结构是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java数据结构学习笔记第一篇:用程序后在那个的数据大致有四种基本的逻辑结构:集合:...
    99+
    2023-05-31
    java 线性表 ava
  • C语言数据结构之线性表的链式存储结构
    1.什么是线性表的链式存储结构 —链表 存储结点:包括元素本身的信息,还有元素之间的关系逻辑的信息 这个结点有:数据域和指针域 一个指针域:指向后继结点, 单链表 二个指针域: 指向...
    99+
    2024-04-02
  • 如何理解C语言数据结构中线性表的链式存储结构
    如何理解C语言数据结构中线性表的链式存储结构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.什么是线性表的链式存储结构 —链表存储结点:包括元素本身的信息,还有元素之间的关系...
    99+
    2023-06-21
  • SQL Server中表和索引存储结构的作用是什么
    这篇文章给大家介绍SQL Server中表和索引存储结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. 堆所谓堆(heap),就是不含聚集索引的表。堆的 sys.par...
    99+
    2024-04-02
  • redis中的hash存储结构是什么
    在Redis中,Hash是一种存储数据的数据结构,类似于一个字典(dictionary)或map。Hash数据结构可以存储多个键值对...
    99+
    2024-04-03
    redis
  • MySQL中的数据存储结构是什么
    这篇文章主要介绍“MySQL中的数据存储结构是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL中的数据存储结构是什么”文章能帮助大家解决问题。 ...
    99+
    2023-02-14
    mysql
  • 怎么使​用Python仿照C语言来实现线性表的顺序存储结构
    今天小编给大家分享一下怎么使用Python仿照C语言来实现线性表的顺序存储结构的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
    99+
    2023-06-16
  • 计算机中采用虚拟存储器的目的是什么
    这篇文章将为大家详细讲解有关计算机中采用虚拟存储器的目的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。采用虚拟存储器的目的是:扩大内存的容量(即寻址空间)。 一般而言,计算机的RAM容量越大,程序运...
    99+
    2023-06-06
  • Linux系统中存储设备的表示方法是什么
    本篇内容介绍了“Linux系统中存储设备的表示方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!硬盘分区的第二种表示方法(hd[0-n...
    99+
    2023-06-16
  • PHP中数据表的选项和储存引擎分别是什么
    这篇文章主要讲解了“PHP中数据表的选项和储存引擎分别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中数据表的选项和储存引擎分别是什么”吧!表选...
    99+
    2024-04-02
  • C语言IO空间映射在存储空间中的结构是什么
    小编给大家分享一下C语言IO空间映射在存储空间中的结构是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!IO 空间映射在存储空...
    99+
    2024-04-02
  • C语言中的变量作用域、链接和存储期的意义是什么
    小编给大家分享一下C语言中的变量作用域、链接和存储期的意义是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在c中变量有三种性质:1、存储期限:变量的存储期限决...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作