本来第一篇文章准备写点关于map的,但是考虑到map中可能也牵扯到数据结构,所以先随便写点就当做铺垫吧!

数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合

1.集合
数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
2.线性结构
数据结构中的元素存在一对一的相互关系;
3.树形结构
数据结构中的元素存在一对多的相互关系;
4.图形结构
数据结构中的元素存在多对多的相互关系。

常见的数据结构:数组、队列、栈、链表、树、图、堆、散列表

1.数组:就是在内存中开辟一个连续的空间存放元素,就相当一群人站成一队,从第一个开始编号001,002....可以轻松的通过号码来找到对应的人,但是如果中间有一个人离队了(中间加了一个人),后面的人号码都要向前(向后)移动,如果队伍很长改的变得就越多,所以数组的特点就是:元素类型是固定的、长度是固定的、通过角标查询,查询快,增删慢。

2.队列: 线性结构,先进先出,就跟一群人排队过水管,先进水管的人的人先出去,后进水管的人后出去
如果你需要删除的话只能从出口一个个按顺序的删除,如果需要添加的话只能从入口一个个按顺序的添加,底层实现用的是LinkedList
3.栈:也是线性结构,先进后出,就跟手枪上子弹一样,先上的子弹会被后上的子弹压到下面,打枪的时候最后上的子弹会第一个打出来,这个就是大家常说的压栈,底层实现同样用的是LinkedList

4.链表:

链表的类型有多种:单链表,双链表,有序链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
可以这样理解:
有一条街,小明住在街中一角,他有小红的地址,然后小红也是住在这条街,她有小花的地址,同样小花也有别人的地址。某天我想找小红玩,但是我不知道她住哪里,我可以问小明,就知道小红住在哪里了。那么小明小红小花这些人之间的关系就组成一个链表。
单链表:
就是小明只是右手握着小红的地址,他只有小红一个人的地址
双链表:
就是小明左手握着小白的地址,右手握着小红的地址,他有两个人的地址
循环链表:
就是小明握有小红的地址,小红握有小花的地址,而小花又握有小明的地址,这样就形成了一个循环
有序链表:
以某个标准,给链表的元素排序,比如比较内容大小、比较哈希值等
链表与数组比较:
优点:链表不需要确定长度大小,也不需要连续的内存空间,
缺点:由于不是连续的空间,所以查找元素比较吃力;相比数组只存储元素,链表的元素还要存储其它元素的地址,内存开销相对增大。

数据结构(数组结构、链表结构)相关推荐

  1. 浅谈:数据结构之双链表结构与代码模拟双链表的实现

    双链表 本文是观看尚硅谷韩老师数据结构与算法根据老师讲解自己做的笔记,部分信息收集网络 与单链表区别 逻辑上没有区别.他们均是完成线性表的内容.主要的区别是结构上的构造有所区别. 对于单链表: 对于一 ...

  2. 算法与数据结构--数组和链表的区别

    最近由于在找工作,经历了一些校招面试后,感觉在数据结构和操作系统上面,还有很多的欠缺.所以今天要学习一下数据结构.还是从面试的那到题开始. 数组和链表的区别? C和C++语言中用数组处理一组数据类型相 ...

  3. JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等

    概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...

  4. Java数据结构——数组、链表

    目录 数据的存储物理结构和逻辑结构 数组 数组的定义与初始化 特点 链表 链表相关代码技巧 数组与链表对比 数据的存储物理结构和逻辑结构 按物理结构: ①:连续的存储空间:数组 元素相邻,在内存中开辟 ...

  5. JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab

    JAVA 基本数据结构(转载) --数组.链表.ArrayList.Linkedlist.hashmap.hashtab

  6. [数据结构] 数组与链表的优缺点和区别

    概述 数组 是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在 ...

  7. 蒟蒻吃药计划-治疗系列 #round6 数据结构初步-指针|链表|结构体

    今天小蒟蒻我学习了一丁点儿关于数据结构的东西,现在我来和大家昏响昏响. %%%WEY神犇神速切火题 更新中 转载于:https://www.cnblogs.com/Fraction/p/8477739 ...

  8. 数据结构 -- 数组+链表 HashMap

    主要讲HashMap, 好像还有一个叫HashTable来着.一个一个讲吧. HashMap,首先我的思路就转到了Hash这种字眼上.HashCode,是一个常见的东西,可是这东西究竟要怎么用那? H ...

  9. Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)

    Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...

  10. 数据结构:栈、队列、数组、链表、红黑树结构的特点

    * 1.栈结构:特点:先进后出,类似子弹夹 * 2.队列的结构: 特点:先进先出 * 3.数组结构: 特点:查询快,增删慢 * 为什么数组查询快? 因为数组的地址是连续的,我们可以通过数组的首地址查到 ...

最新文章

  1. 决策树算法python源代码_决的解释|决的意思|汉典“决”字的基本解释
  2. IIS7.0 网站发布页面显示 500 - 内部服务器错误。您要查找的资源有问题,无法显示...
  3. JavaScript基础总结(五)——Math对象
  4. kali linux grub 安装失败,kali linux2 安装问题总结
  5. halcon相关的链接
  6. 线程间通信之eventfd
  7. 华为路由器上有没有mac表_MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理...
  8. tomcat 设置java_为tomcat配置java环境变量
  9. 将String数组转换到Double数组
  10. c语言给定一个单链表输入k,C语言实现单链表(不带头结点)的基本操作
  11. libcrypto.so.1.0.0内容丢失导致sshd无法运行解决方案
  12. 【java笔记】random类生成随机数
  13. Java 堆排序(大根堆及小根堆)
  14. java考试题及答案翁凯,快来收藏!
  15. 离职时如何拒绝领导的挽留
  16. html中图片以图片中心放大旋转,图片旋转放大居中
  17. 互联网产品三大需求文档:BRD、MRD、PRD
  18. 利用Excel宏中文转拼音方法
  19. gcc简介和命令行参数说明
  20. 运营商大数据丨电销行业如何高效获得精准客户

热门文章

  1. 实训1_获取产业数据并存储_预处理与简单分析
  2. 递归、分治算法刷题笔记
  3. 【公平锁和非公平锁有什么区别?】
  4. oracle用户之间授权查询
  5. Java-坦克大战2
  6. oracle获取某年第一天和最后一天,Oracle取得本月、本年第一天和最后一天
  7. mobiscroll插件滑动时间选择效果
  8. R语言caret机器学习(四):数据拆分
  9. ROS配置多机器人导航
  10. python爬网站数据实例-如何用Python爬数据?(一)网页抓取