热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据结构用链表实现栈(设用链表作为栈)

一、解释定义1.数据结构:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。Java中的数组就是典型的顺序存储,链表就是非顺序存储。所以单向链表的最后一个节点是指向Nul


一、解释定义 1.数据结构:


数据结构是相互之间存在一个或多个特定关系的数据元素的集合。 再简单说明一下,数据结构是记述对象间逻辑关系的学科。


如果还是不太清楚,请举例如下。


2 .数据存储结构:


简单地说,就是数据在计算机中的存储方法。


典型的数据存储有两种方法:顺序存储和非顺序存储。 顺序存储是指将数据存储在一个相关的存储介质(如硬盘或内存)中。 相反是非顺序存储啊。 Java数组是典型的顺序存储器,而链表是非顺序存储器。 在数组中存储数据时,会创建一个接触存储器并按顺序存储。 链表并不是首先建立内存,只要知道下一个节点保存在哪里,就可以连接所有的数据。 因此,单向链表的最后一个节点指向Null。


数组、链表、栈和队列是最基本的数据结构,任何程序语言都包含一种或多种类型。


二、数组数组是数据结构中的基本结构,很多编程语言中都内置有数组。


java在创建数组时在内存中分割连续的内存,在数据进入时按顺序将数据存储在连续的内存中。 如果需要读取数组中的数据,则必须提供数组中的索引,数组根据索引检索内存中的数据,然后返回给读取程序。 Java并不是将所有数据存储在数组中,而是只将相同类型的数据一起存储在数组中。




所有的数据结构都支持读取、插入和删除这一基本操作。


数组在存储数据时按顺序存储,存储数据的存储器也是连续的,所以具有寻址读取容易,插入和删除困难的特点。 简单说明一下为什么,读入数据时,告诉数组从哪个位置(索引)取得数据即可,数组直接取出想要位置的数据进行传递。 插入和删除之所以困难,是因为存储这些数据的内存是连续的,要插入和删除这些数据,必须更改数组中数据的位置。 例如,一个数组在0-1-2-3-4这5个存储器地址中存储了数组的数据,但现在需要在4中插入数据。 那意味着从4开始,后面所有内存的数据都向后移动一个。 但是,需要时间。




用三、链表Java创建链表的过程与创建数组的过程不同,不会首先分割连续的内存。 链表中的数据不是连续的,所以链表在存储数据的内存中有两个区域。 一个区域用于存储数据,另一个区域用于记录下一个数据存储在哪里(指向下一个数据的指针)。 数据进入链表后,基于指针找到存储下一个数据的位置,保存数据,然后指向存储下一个数据的位置。 这样,链表利用了碎片化的空间。 链表是一个线性表,但并不是按线性顺序存储数据。




链表就是这样保存数据的,所以链表很容易插入和删除,读取数据很麻烦。 举例来说,在一个链表中有5个存储器地址0-1-2-3-4存储数据。 当前需要在2中插入数据时,只需更改1号和2号记录下一个数据的位置即可,不影响其他数据。 删除一个数据与插入相似,而且效率很高。 但是,如果想从链表中检索数据,则需要从0日开始逐个查找,直到找到想要的数据为止。




插入到链表中




从链表中删除


四、栈堆栈是先进的后发数据结构,可以通过数组和链表生成堆栈。 数据进入堆栈时,按照规则被推入堆栈底部,再次进入的数据被推入最初的数据之上,像这样。


取出堆栈中的数据时,首先取出最上面的数据,因此是先入先出。

gin/pgc-image/5ae9205b484540c9ab5a13b925f1519b?from=pc">

由于数组和链表都可以组成栈,所以操作特点就需要看栈是由数组还是链表生成的了,然后就会继承相应的操作特点。

五、队列

队列是一种先进先出的数据结构,数组和链表也都可以生成队列。当数据进入到队列中时也是先进入的在下面后进入的再上面,但是出队列的时候是先从下面出,然后才是上面的数据出,最晚进入的队列的,最后出。

举个简单的例子:可以把栈和队列看成是两根管子,这两根管子是用来存储数据的,有可能是数组生成的也有可能是链表生成的,栈的这根管子有一头是封死的,所以像这个管子放数据只能从一个口进,拿出数据的时候也只能从这一个口拿出来。而队列这根管子呢两个口都是敞开的,一个口负责进数据,另一个口负责出数据,所以从一进口先进去的数据,在出口处会先被拿出来。

推荐阅读

绝对干货,掌握这27个知识点,轻松拿下80%的技术面试(Java岗)

一线大厂为什么面试必问分布式?

在一次又一次的失败中,我总结了这份万字的《MySQL性能调优笔记》

并发编程详解:十三个工具类,十大设计模式,从理论基础到案例实战

如何高效部署分布式消息队列?这份《RabbitMQ实战》绝对可以帮到你


推荐阅读
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 讨伐Java多线程与高并发——MQ篇
    本文是学习Java多线程与高并发知识时做的笔记。这部分内容比较多,按照内容分为5个部分:多线程基础篇JUC篇同步容器和并发容器篇线程池篇MQ篇本篇 ... [详细]
  • celery 爬虫使用
    简介celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度。它由三部分组成,消息中间件, ... [详细]
  • 这也太简单了!轻松操作Feign 服务调用使用 Zipkin 链路追踪!
    0、介绍分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin是T ... [详细]
  • 怎么去学java能达到最好的效果
    本文主要分享【怎么去学java能达到最好的效果】,技术文章【Java自学的话怎么样最有效果?】为【测试小扎】投稿,如果你遇到java,编程相关问题,本文相关知识或能到你。怎么去学java能达到最好的 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 数据库锁的分类和应用
    本文介绍了数据库锁的分类和应用,包括并发控制中的读-读、写-写、读-写/写-读操作的问题,以及不同的锁类型和粒度分类。同时还介绍了死锁的产生和避免方法,并详细解释了MVCC的原理以及如何解决幻读的问题。最后,给出了一些使用数据库锁的实际场景和建议。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 源码包安装RabbitMQ3.6
    先安装erlang依赖,也是门编程语言,下载源码包地址:https:www.erlang.orgdownloads20.1首先先安装个依赖 ... [详细]
  • RabbitMQ消息中间件快速入门:SpringBoot整合生产者与消费者
    前言本章我们来一次快速入门RabbitMQ——生产者与消费者。需要构建一个生产端与消费端的模型。什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker。 ... [详细]
author-avatar
意淫图
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有