链表相关知识整理

版权声明:欢迎转载学习! https://blog.csdn.net/m0_38081836/article/details/84587912

标语:如果惧怕前面跌宕的山岩,生命永远只能是死水一潭

链表

定义:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
比较:

  • 数组
    在这里插入图片描述
  • 链表

在这里插入图片描述

如何建立链表

  • 头插法
    将元素插入链表头的后面
  • 尾插法
    将元素顺序插入链表当中

如何逆序一个链表

  • 非递归
    需要三个辅助变量前驱(pre),当前节点(p),后继节点(next)

  • 递归
    递归到最后返回的时候,p->next->next = p;实现单次逆序,然后回溯最终整个链表逆序成功

  • 头插

基本操作

  • 插入
  • 删除

拓展

  • 删除重复元素
    1. 建立hash表,时间复杂度 O n O(n)
    2. 暴力循环查找重复元素 ,时间复杂度 O n 2 O(n^2)
  • Farey序列相关知识
  1. 定义:选取一个正整数n。把所有分母不超过n的最简分数找出来,从小到大排序。这个分数序列就叫做Farey序列。
  2. 定理:在Farey序列中,对于任意两个相邻分数,先算出前者的分母乘以后者的分子,再算出前者的分子乘以后者的分母,则这两个乘积一定正好相差1!
  • 双向链表的建立
    对于每个节点增加前驱指针即可
  • 循环链表的建立
    最后一个元素指向第一个元素即可

猜你喜欢

转载自blog.csdn.net/m0_38081836/article/details/84587912