当前位置: 首页 > news >正文

广州商城建站北京网站优化实战

广州商城建站,北京网站优化实战,wordpress制作单页网站导航页面,桂林新闻网桂林人论坛读《大话数据结构》学习笔记线性表线性表是零个或多个数据元素的有限序列。线性表的顺序存储结构定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。优点:无须为标识表中元素之间的逻辑关系而增加额外的存…

读《大话数据结构》学习笔记

线性表

线性表是零个或多个数据元素的有限序列。

线性表的顺序存储结构

定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

优点:

  • 无须为标识表中元素之间的逻辑关系而增加额外的存储空间

  • 可以快速地读取表中任一位置的元素(时间复杂度为O(1))

缺点:

  • 插入和删除操作需要移动大量元素(时间复杂度为O(n))

  • 当线性表长度变化较大时,难以确定存储空间的容量(容易造成溢出或者空间浪费)

  • 造成存储空间的“碎片”

线性表的链式存储结构

链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是联系的,也可以是不连续的。这就意味着,这些数据元素可以存在内存未被占用的任意位置。

  • 单链表:

    • 头指针

    • 头结点

    • 结点:

      在链式存储结构中,我们把一个同时拥有存储有数据元素信息(数据域)和存储直接后继位置的数据元素(指针域)称为结。

      de246e5f1a13565f13b5a2c092b7fa91.png
    • 单链表定义:

      n个结点链结成一个链表,即为线性表的链式结构,因为此链表的每个结点中只包含一个指针域,所以叫做单链表。

    • 头指针

      我们把链表中第一个结点的存储位置叫做头指针,整个链表的存取必须是从头指针开始进行的。

      afbe1420e844047c90bb444d78e2ab23.png
    • 头结点

      有时,为了更加方便的对链表进行操作,我们会在单链表的第一个结点前附设一个结点,称为头结点。头结点的数据域可以不存储任何信息,也可以存储如线性表的长度等附加信息。

      51002fe6478b88510b2c5ada394f6a25.png
    • 头指针与头结点的异同

    • 空链表

      头结点的指针域为“空”,则线性表为空。

    • 单链表的读取,获取链表第i个数据的算法思路(时间复杂度O(n)):

      1、声明一个结点p指向链表第一个结点,初始化j从1开始。

      2、当j

      3、若到链表末尾p为空,则说明第i个元素不存在。

      4、否则查找成功,返回结点p的数据。

    • 单链表的插入,单链表第i个数据插入e结点的算法思路(时间复杂度O(n)):

      1、声明一个结点p指向链表第一个结点,初始化j从1开始。

      2、当j

      3、若到链表末尾p为空,则说明第i个元素不存在。

      4、否则查找成功,在系统中生成一个空节点s。

      5、将数据元素e赋值给s->data。

      6、单链表的插入标准语句s->next=p->next; p->next=s。

      7、返回成功。

    • 单链表的删除,删除单链表中第i个数据(q)的算法思路(时间复杂度O(n)):

      1、声明一个结点p指向链表第一个结点,初始化j从1开始。

      2、当j

      3、若到链表末尾p为空,则说明第i个元素不存在。

      4、否则查找成功,将欲删除的结点p->next赋值给q。

      5、单链表的删除标准语句p->next=q->next。

      6、将q结点中的数据赋值给e,作为返回。

      7、释放q结点。

      8、返回成功。

    • 单链表的优点

      综上可以看出,单链表常规的查找、插入、删除的时间复杂度都为O(n)。但是如果我们希望在第i个位置,插入10个元素,在顺序存储结构中我们需要进行10次O(n)的操作。而在单链表中我们只需要在第一次查找时进行O(n)的操作,而后只需要移动指针(时间复杂度为O(n))就可以了。所以,对于插入或删除数据越频繁的操作,单链表的效率优势就越明显。

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

  2. 头指针具有标识作用,所以常用头指针冠以链表的名字

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

  4. 头结点是为了操作的统一和方便设立的,放在第一元素的节点之前,且数据域一般无意义(也可以存放链表的长度)

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

  6. 头结点不一定是链表的必须要素

静态链表:

在一些语言中,没有指针,所以有人就想出来用数组来代替指正。如下图所示,这种用数组描述的链表叫做静态链表

f2bc5dde2346f5ed89cc4f83103a8828.png

其中cur为游标,data为数据,下图为有存放数据时的状态

c3e2b0308027cfc21da17f308f77f4f9.png
  • 静态链表的插入操作(在第i个元素之前插入元素)

    1、获得空闲分量的下标(也就是数组第一个元素的cur值)

    2、将要插入的数据赋值给此分量的data

    3、找到第i个元素之前的位置(这一步循环里面对k变量的使用得认真看且理解)。

    4、将第i个元素之前的cur赋值给新元素的cur

    5、将新元素的下标赋值给第i个元素之前元素的cur

    9d9363165d83c1f7be9f04827d965c55.png

    图示如下:

    25bbabac990dc072481069ee684d810b.png
  • 静态链表的删除操作(删除第一个元素)

    1、在链表中找到要删除的元素

    2、将要删除元素的cur值赋给前一个元素的cur

    3、将第一个元素cur值赋值给要删除的分量cur(也就是将之前记录空余位置的cur分配给要删除的分量cur)

    4、将要删除的分量下标赋值给第一个元素的cur(也就是将删除之后空余的空间记录下来)

    如下图所示

    7904a5c8934aaeb74cbfc57e54d43d91.png
  • 静态链表的优缺点

    优点:在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点

    缺点:1、没有解决连续存储分配带来的表长难以确定的问题。2、失去了顺序存储结构随机存取的特征

循环链表

将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表

065b5f7270842fb8d5717dac6c9ee3a8.png

尾指针:为了更方便的找到最后一个结点,我们将最后一个结点的尾指针来表示循环链表,如下图所示

8dc759ad2bf340b6a52e57237476ae15.png

双向链表

双向链表是在单链表的每个结点中,在设置一个指向起前驱结点的指针域。如下图所示

987ffcffcbeb505be635c7797ab081ab.png
  • 双向链表的插入操作

    e4bb6300761d433d5491c2e183bd9b35.png
  • 双向链表的删除操作

    ab1aa88ffcbace4d16dec8e7187ac8f2.png

总结

65c20b844d0ca1ccde4a6d4d07f0b104.png
http://www.lbrq.cn/news/2745901.html

相关文章:

  • 注册号域名后 怎么建设网站好看的html网页
  • 我想做亚马逊网站怎么做网站软件下载
  • 泸州网站建设报价网址关键词查询网站
  • 做网站视频存储苏州seo门户网
  • 网站页面宽度seo优化与sem推广有什么关系
  • 网络公司 营销型网站广东短视频seo营销
  • php网站设计人员郑州网站开发顾问
  • 福州网站建设兼职网络营销案例视频
  • 长沙自媒体公司广州:推动优化防控措施落
  • 网站建设学费要多少广告优化师前景怎样
  • 专做婚礼logo的网站推广普通话的意义简短
  • 烟台网站开发制作网站开发费用
  • 网站如何做se企业网站优化外包
  • 做足彩推荐赚钱的网站品牌营销是什么
  • html改变字体大小代码张家界网站seo
  • 文体广电旅游局网站建设方案信息流优化师面试常见问题
  • 海淀做网站百度竞价点击价格
  • 可以做外链的图片网站山东省住房和城乡建设厅
  • 网站改版什么意思哪些行业适合做seo
  • 网站营销型企业销售平台搜索优化网络推广
  • 哈尔滨微网站建设吴江网站制作
  • 网站空间怎么买免费的网页模板网站
  • 合肥企业网站建设工作室网站推广工具有哪些
  • 网站建设怎么接单上海站优云网络科技有限公司
  • 军事新闻网最新新闻河北电子商务seo
  • 网站搜索栏怎么做南京关键词优化软件
  • 建设工程教育网建设工程类的考试辅导网站广州百度首页优化
  • flash网站导航怎么做公众号如何推广运营
  • 网站建设公司潍坊微博seo营销
  • 模板网站可以自己买空间吗吗安徽网站推广优化
  • C#WPF实战出真汁13--【营业查询】
  • Mitt 事件发射器完全指南:200字节的轻量级解决方案
  • 【Java学习】锁、线程死锁、线程安全2
  • AI创业公司分析:Paloma
  • 链路聚合与软件网桥配置
  • 5G赋能井下“毛细血管”:巴拉素煤矿零散排水点智能监控系统