• 数组是内存的实现及栈和队列的数据结构


    目录

    一、数组是内存的实现

    二、栈和队列

    栈的数据结构

    队列

    队列的数据结构


    一、数组是内存的实现

    数组是指多个相同的数据类型在内存中连续排列的一种形式。作为数组元素的各个数据会通过下标编号来区分,这个编号也叫做索引,如此一来,就可以对指定索引的元素进行读写操作。

    用char、short、long三种元素来定义数组,数组的元素用[value]括起来,里面的值代表的是数组的长度,就像下面的定义:

    1. char g[100];
    2. short h[100];
    3. long i[100];

    数组定义的数据类型,也表示一次能够读写的内存大小,char、short、long分别已1、2、4个字节为例进行内存的读写

    数组是内存的实现,数组和内存的物理结构完全一致,尤其是在读写1个字节的时候,当字节数超过1时,只能通过逐个字节来读取,下面是内存的读写过程:

    不同数据类型的数组:

    二、栈和队列

    数组是内存的一种实现,使用数组能够使编程更加高效,也可以通过其他数据结构进行内存的读写

    栈(stack)是一种很重要的数据结构,栈采用LIFO(Last In Fist Out)即后入先出的方式对内存进行操作。它就像一个大的收纳箱,你可以往里面放相同类型的东西,比如书,最先放进收纳箱的书在最下面,最后放进收纳箱的书在最上面,如果你想拿书的话,必须从最上面开始取,否则是无法取出最下面的书籍的

    栈的数据结构就是这样,你把书籍压入收纳箱的操作叫做 压入(push),你把书籍从收纳箱取出的操作叫做 弹出(pop),它的模型图大概如下:

    栈的数据结构

    入栈相当于是增加操作,出栈相当于是删除操作,只不过叫法不一样。栈和内存不同,它不需要指定元素的地址。它的大概使用如下:

    1. //压入数据
    2. Push(123);
    3. Push(456);
    4. Push(789);
    5. //弹出数据
    6. J = Pop();
    7. k = Pop();
    8. l = Pop();

    在栈中,LIFO方式表示栈的数组中所保存的最后面的数据(Last In)会被最先读取出来(First On)

    运行时栈的变化:

    队列

    队列和栈很相似但又不同,相同之处在于队列也不需要指定元素的地址,不同之处在于队列是一种先入先出(First In First Out)的数据结构。队列在我们生活中的使用很像是我们去景区排队买票一样,第一个排队的人最先买到票,以此类推,俗话说:先到先得。它的使用如下:

    1. //往队列中写入数据
    2. EnQueue(123);
    3. EnQueue(456);
    4. Enqueue(789);
    5. //从队列中读出数据
    6. m = DeQueue();
    7. n = DeQueue();
    8. o = DeQueue();

    向队列中写入数据称为EnQeue()入列,从队列中读取数据称为Deqeue()

     队列的数据结构

    与栈相对,FIFO的方式表示队列中最先保存的数据会被优先读取出来

    运行时队列的变化:

     队列的实现一般有两种:顺序队列循环队列,上图的就是顺序队列

  • 相关阅读:
    毕业后做了两年软件测试,只会功能测试,难道真的要去工地搬砖或者去做销售吗?
    猿创征文|数据导入与预处理-第3章-pandas基础
    机器学习与深度学习的基本概念
    股票程序化交易如何把交易分析简单化?
    L2TP客户端之Strongswan移植(二)
    计算机视觉——python在一张图中画多条ROC线
    网络安全评估(网络安全评估)
    恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬
    收银管理软件如何做好员工管理?
    训练一个目标检测模型
  • 原文地址:https://blog.csdn.net/m0_61961937/article/details/127128629