首页 > 其他分享 >05数据结构(栈、队列、数组、链表)

05数据结构(栈、队列、数组、链表)

时间:2023-10-30 13:11:23浏览次数:29  
标签:05 队列 查询 链表 后进先出 数据结构 数据

数据结构

一、什么是数据结构

  • 计算机底层存储、组织数据的方式。
  • 是指数据相互之间是以什么方式排列在一起的。
  • 数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。
  • 一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
  • 如何学习数据结构:
    • 每种数据结构长什么样子?
    • 如何添加数据?
    • 如何删除数据?
  • 常见的数据结构:栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树

二、栈

  • 栈的特点:后进先出,先进后出。

    1

    2

三、队列

  • 队列的特点:先进先出,后进后出。

    3

四、小结

  1. 栈:后进先出,先进后出。
  2. 队列:先进先出,后进后出。

五、数组

  • 数组是一种查询快增删慢的模型。
  • 查询速度快:查询数据通过地址和索引定位,查询任意数据耗时相同。(元素在内存中是连续存储的)
  • 删除效率低:要将原始数据删除,同时后面每个数据前移。
  • 添加效率极低:添加位置后的每个数据后移,再添加元素。

六、链表

4

  • 链表中的节点是独立的对象,再内存中是不连续的,每个节点包含数据值和下一个节点的地址。

  • 链表查询慢,无论查询哪个数据都要从头开始找。

    5

  • 链表增删相对快

  • 增加B:

    6

  • 删除C

    7

七、双向链表

  • 可以双向查询,提升了查询效率。

8

七、总结,各种数据结构的特点和作用是什么样子的?

  • 栈:后进先出,先进后出。
  • 队列:先进后出,后进先出。
  • 数组:内存连续区域,查询快,增删慢。
  • 链表:元素是游离的,查询慢,首位操作极快。

标签:05,队列,查询,链表,后进先出,数据结构,数据
From: https://www.cnblogs.com/ahbzbn/p/17797568.html

相关文章

  • 21. 合并两个有序链表
    目录题目代码题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]代码class......
  • 面试必刷TOP101:16、删除有序链表中重复的元素-II
    一、题目二、题解importjava.util.*;publicclassSolution{publicListNodedeleteDuplicates(ListNodehead){//空链表if(head==null)returnnull;ListNoderes=newListNode(0);//在链表前加一个表头......
  • 数据结构之散列表与哈希函数初识
    一:概述一:为什么需要散列表*在我们的程序世界里,往往也需要在内存中存放这样一个“词典”,方便我们进行高效的查询和统计。*例如开发一个学生管理系统,需要有*通过输入学号快速查找对应学生的姓名的功能。*这里不必要每次都去查询数据库,而可以在内存中建立一个缓存表,这样做可以......
  • 数据结构与算法-cnblog
    数据结构与算法课程笔记树与二叉树树的深度与高度高度就可以理解为深度看层数:如果根结点第0,层数=深度=高度-1如果根结点第1,层数=深度=高度深度定义是从上往下的,高度定义是从下往上的......
  • 19. 删除链表的倒数第 N 个结点(中)
    目录题目法一、循环法二、快慢指针题目给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]法一、循环classSolution:......
  • Python数据结构——栈
    栈(Stack)是一种基本的数据结构,它遵循“后进先出”(Last-In-First-Out,LIFO)的原则,即最后放入栈的元素最先出栈。栈常用于管理函数调用、表达式求值、括号匹配等问题。本文将详细介绍Python中栈数据结构的使用,并提供示例代码来说明。什么是栈?栈是一种线性数据结构,它由一组元素组成,支持两......
  • 数据结构之树(二叉树)
    什么是二叉树(binarytree)?在树结构的基础上,要求其中每个节点最多有两个子节点(一个节点最多有2个边)。二叉树由根节点和若干个左子树和右子树构成,这些子树也都是二叉树。二叉树可以为空树,也可以只包含一个根节点。为什么树形结构常用二叉树呢?就是为了省空间。n叉树,n越大就需要更......
  • #链表#CF706E Working routine
    题目给出一个\(n*m\)的矩阵,每次交换两个等大的矩阵,输出\(q\)次操作后的矩阵分析维护向右和向下的指针,考虑最后输出只需要从每行的头指针向右跳,那么修改实际上是将矩阵左边一列、上面一行、最后一行和最后一列向右下指针交换时间复杂度\(O((n+m)Q)\)代码#include<cs......
  • 237. 删除链表中的节点(中)
    目录题目代码题目有一个单链表的 head,我们想删除它其中的一个节点 node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点  head。链表的所有值都是唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。删除给定的节点。注意,删除节点并不是指从......
  • NOIP[区间数据结构类问题]
    平面最近点对经典的分治问题,把所有的点按照\(x\)排序,然后分治处理两个子区间,然后枚举离中心少于已知最小值的点,判断能否出现更小值。intn,temp[250000];structnode{ intx,y;}a[500500];boolcmp(nodel,noder){ if(l.x==r.x)returnl.y<r.y; returnl.x<r.x;}doub......