数据结构和算法-2023.07.03

这篇具有很好参考价值的文章主要介绍了数据结构和算法-2023.07.03。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

初衷💁🏻

  由于工作量加大,加之每天要写博客的内容上,深度可能没有那么深度了,但是为了保持这个日更的习惯,还是要坚持更新一些,我也发现了,其实写这个博文,更让我从某种程度上我重新的安静下来,重新的去理解和审视之前学习过的知识,之前的薄弱点在哪里,即使在工作量非常大的情况下,我觉得还是有必要回顾一下以前学过的数据结构的知识点的,我有点不太想把这个集成到工作的日常内容的分享,现在想不想不知道要不要将这个将工作的日常内容也记录到这里面,这样就面对是否要变成日报或者周报的汇总了,后面再考虑下。

数据结构

  今天重新回顾了下链表相关的数据结构也就是LinkedList,先不上代码了,简单了解下我对链表的理解,链表的出现也是为了解决ArrayList的空间浪费的问题,虽然ArrayList的问题解决了数组不能主动扩容的问题,但是还是会造成空间的浪费,其实后面再实际工作中发现了,真实的情况下,很少有用到LinkedList,没有会在意那些个多余的空间,但是关于LinkedList的数据结构的设计是非常巧妙的,在设计的时候,需要根据对应的prev和后置的next的节点来进行重新的指针指向。

  谈一下我对这个LinkedList的看法,之前在整个学校链表的过程中,尤其在学习到双向循环链表的时候,非常的绕,一会next,一会prev,工作中完全没有用到过这种东西,但是不可否认的,这么复杂的逻辑情况下,如果自己可以抽象的很清楚的话,那么还有什么复杂的业务是不能用程序来进行实现的呢,所以在学习链表的这个地方,我觉得还是慢下来,仔细思考下为什么这么设计,之前在学习链表的过程中,可以明显的看到,在学习链表的时候,需要进行Node<E>这个内部类的设计,其实我之前一直不明白,你用链表为啥非要搞内部类,为啥一定要有Node<E>这种操作,而没有想ArrayList这种直接简单的操作,不需要用对象操作,其实这个链表也有点面向对象的那种意思了。但是今天重新回顾了一下,用面向对象,这种Node<E>就两个属性,记录当前的内容,和下一个对象的地址,这不就是为了节省空间才这么设计的么,ArrayList里面如果存放了对象,记录的也是地址,然后通过地址在去指向实际的存储的内容,直接通过链表的话,里面存的就是一个对象,对象里面可以想放什么就放什么,通过对象,然后在通过对象的下一个地址,就可以将一串的数据连接起来,形成一个链表,这种方式的设计,完全趋同与线性表的设计,是两种方向的思想,之前的线性表在进行设计的时候,必须是连续的,而对于非连续的数据想要实现就变的非常的困难。

  链表就是为了解决非连续的数据来进行设计的,在进行设计非连续的数据的时候,通过任意修改指针的执行,就可以修改下一个元素的内容和要执行的下一个数据的方向,这种对数据排序的操作可以说是非常方便的。对比线性表的操作,大部分都是element[i-1]=element[i];后一个元素往前挪,或者前一个元素往后挪的这种操作,而链表的这种操作,则更多的在操作next,指向的操作,这个可以说是灵魂所在,他不不是直接去移动数据了,而是去移动对象里面有关移记录数据位置的直向,更直接的还是偏向于在对应的对象的层面的设计思想,这其实是用针对面向对象的思想去解决了数据存储的问题,这个问题我之前一直没有深刻的意识到,如果没有意识到这个面向对象的思想在数据中存储的优势所在,在后面的二叉树和图这个方面,会有大量的Node<E>出现代码会变得非常的庞大,逻辑会有点复杂,都是为了解决上一个存储结构的不够便利,采用面向对象进行优化的,总得来说,面向对象的思想在数据结构中也处处可在。明天再放上代码,还需要更深刻的思考才行。

积累,专注,持之以恒的坚持

2023.07.03文章来源地址https://www.toymoban.com/news/detail-523269.html

到了这里,关于数据结构和算法-2023.07.03的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构与算法】JavaScript实现排序算法

    一、大O表示法 大O表示法: 在计算机中采用 粗略的度量 来描述计算机算法的 效率 ,这种方法被称为 “大O”表示法 在 数据项个数 发生改变时, 算法的效率 也会跟着改变。所以说算法A比算法B快两倍,这样的比较是 没有意义 的。 因此我们通常使用 算法的速度 随着 数据

    2024年02月02日
    浏览(53)
  • 【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)

    队列( queue )是一种常见的数据结构,它遵循先进先出(FIFO)的原则。队列可以理解为一个具有两个端点的线性数据结构,其中一个端点称为\\\"队尾\\\"(rear),用于插入新元素,另一个端点称为\\\"队首\\\"(front),用于移除元素。新元素被插入到队尾,而最早插入的元素总是在队

    2024年02月08日
    浏览(54)
  • JavaScript中的数据结构和算法

    JavaScript不仅是一门用于网页交互的脚本语言,还可以用于编写高效的数据结构和算法。在本文中,我们将介绍JavaScript中可用的数据结构和常见的算法,并说明它们在实际应用中的用途和性能。 数据结构 数组 数组是JavaScript中最常见的数据结构之一,可以用来存储和访问一系

    2024年02月01日
    浏览(51)
  • JavaScript数据结构与算法整理------数组

            数组的标准定义: 一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量 ,几乎所有的编程语言都有类似的数据结构,而JavaScript的数组略有不同。         JavaScript中的数组是一种特殊的对象,用来表示偏

    2023年04月24日
    浏览(62)
  • 数据结构与算法--javascript(持续更新中...)

    1. 数据结构 队列: 一种遵循 先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。 (例如:去食堂排队打饭,排在前面的人先打到饭,先离开;排在后面的人后打到饭,后离开。) 栈: 一

    2024年02月16日
    浏览(38)
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之007 week01 02-07 简单的复杂度分析

    复杂度分析本身是非常理论化的一个内容,在计算机科学中,有一个专门的学科叫做—— 计算复杂性理论 。 很多童鞋看过《算法导论》,这本书的内容很多很强调算法导论。 但是实际上,对于普通程序员来说, 不需要 过度强调理论化的内容 。因为工作中更多面对的是实际

    2023年04月19日
    浏览(59)
  • PHP 房产网站系统Dreamweaver开发mysql数据库web结构php编程计算机网页项目

    一、源码特点     PHP 房产网站系统是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88233553 论文 https://download.csdn.net/download/qq_41221322/88233555 PHP 房产网站系统Drea

    2024年02月12日
    浏览(57)
  • 【每日算法 && 数据结构(C++)】—— 03 | 合并两个有序数组(解题思路、流程图、代码片段)

    An inch of time is an inch of gold, but you can’t buy that inch of time with an inch of gold. An inch of time is an inch of gold, but you can\\\'t buy that inch of time with an inch of gold 给你两个有序数组,请将两个数组进行合并,并且合并后的数组也必须有序 这个题目要求将两个有序数组合并成一个有序数组。在数

    2024年02月11日
    浏览(55)
  • 数据结构与算法之查找: 顺序查找 (Javascript版)

    顺序查找 思路 遍历数组 找到跟目标值相等元素,就返回它的下标 没有找到,返回-1 算法实现 总结 非常低效,算是入门搜索 时间复杂度:O(n) 对于数组结构或链表结构而言,没什么太多可说的

    2024年02月05日
    浏览(49)
  • 数据结构与算法之排序: 计数排序 (Javascript版)

    排序 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 计数排序 核心思想 :通过计数而非比较来进行排序,借助数组下标本身就是有序的原理实现 适用范围:较小的非负整数序列和最小值和最大值之间的数字范围比较合适 基数排序需要新增一个计数数

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包