美文网首页
一维数据结构关系

一维数据结构关系

作者: 孢子菌 | 来源:发表于2020-09-17 17:30 被阅读0次

前言

从数据结构说起,面试了很多人,对于数据结构总是说不清楚,有的说数组链表,有的混进来,甚至有的说不清队列的区别。这里写一篇博客,总结下常见的数据结构认识误区,就先从数组、链表开始吧。

区分

数组、链表是最基础的数据结构之一,是一维的数据结构,他们的区别是:

数组中元素地址连续的,链表中两个元素地址不一定连续,而是由专门的一个指针指明该元素的后一个(前一个)元素的地址。

在此之上再衍生出来的其他一维数据结构包括:队列、栈、堆。他们都是满足一定规则、或者说一定特性的数组、链表的拓展。这些拓展数据结构,底层都可以使用数组或链表(基础一维结构)来实现。

PS:比较特殊,是指用数组实现的二叉树。

堆区、栈区

对于操作系统为程序运行区分的堆区、栈区,也有很多的和堆、栈数据结构搞混,这里介绍下什么是堆区、栈区

堆区

由程序员调用malloc()函数来主动申请的,需使用free()函数来释放内存,若申请了堆区内存,之后忘记释放内存,很容易造成内存泄漏

栈区

栈区由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须手动管理。栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。

程序内存分布

补充:
代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的。
常量区:存放常量(程序在运行的期间不能够被改变的量,例如: 10,字符串常量”abcde”, 数组的名字等)
静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放

小结

这期介绍了一些一维数据结构,哪些是基础存在的,哪些是衍生的。后续会将其中每一个拎出来讲,侧重点是实现方法和其中的优化点。不要小看了数据结构,很多巧妙的思想都是可以在这些数据结构的实现中找到。

参考

https://www.jianshu.com/p/afbfc784238a
https://blog.csdn.net/u014470361/article/details/79297601

相关文章

  • 《数据库系统概论》笔记 2 -- 关系数据库

    2.1 关系数据结构及形式化定义 2.1.1 关系 关系模型只包含单一的数据结构——关系。 常见定义: 域:一组具...

  • 2018-08-29 关系数据库

    关系数据库系统是支持关系模型的数据库系统。关系模型的组成:关系数据结构,关系操作,关系的完整性。 单一的数据结构—...

  • 数据结构—概述

    数据结构概述 数据结构概述:程序设计 = 数据结构 + 算法数据结构:数据元素之间存在所有特定关系的集合,数据结构...

  • OVS 源码分析整理

    OVS 核心代码 OVS 架构 OVS 主要的数据结构数据结构关系图主要的数据结构和数据结构的参数数据结构代码 d...

  • 数据结构面试题一

    1.常用数据结构简介 数据结构是指一种或者多种关系的数据元素的集合或者该数据集合之间的关系组成。常见的数据结构有数...

  • Redis

    Redis 关系型和非关系数据库比较: redis数据结构 redis列表数据结构 案例 概念: redis是一款...

  • 数据结构

    数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。 数据结构分类...

  • 读书 【数据与算法】第三章 树与二叉树

    一、 树 基本概念 表现为以分支关系定义的层级关系,非线性数据结构。 1.1 定义 与 性质 树:递归的数据结构一...

  • 数据结构与算法基础

    思维导图 一、数据结构 1、数据结构基础 1.1、什么是数据结构? 数据结构:是相互之间存在一种或多种特定关系的数...

  • 【1】数据结构和算法绪论

    数据结构 逻辑结构 集合结构:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 线性结构:数...

网友评论

      本文标题:一维数据结构关系

      本文链接:https://www.haomeiwen.com/subject/dhjlyktx.html