数据结构入门学习(二):数组基础介绍

NCL变量及基本语法 NCL是常用的绘图及数据处理软件,但其学习资料多为英文版,特此发中文版供交流学习 立即下载

关于博主

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

                                      微信公众号:  啃饼思录

                                    QQ: 2810706745(i思录)

写在前面

本篇我们要学习第一个数据结构–数组,数组里面有很多值得我们去深度挖掘的东西,因此我们首先来介绍它。

数组基础介绍

数组把数据码成一排进行存放,其根据索引号来对元素实现位置上的确定。数组中的索引号从0开始,而且Java规定数组必须存放同一类型的元素,你可以通过中括号下标的方式来获取元素。
贴士:你可以点击点击右边的小齿轮,然后点击出现的show members就可以显示所有类内部的目录

下面是常见的数组创建和遍历输出的方法:

package com.suanfa.test.Array;

import java.util.Arrays;

public class ArrayTest {
    //必须传入数字
public static void main(String[] args) {
    int [] arr =new int[10];
    for(int i=0;i< arr.length;i++){
        arr[i]=i;
    }


    System.out.println("**********************");

    int [] scores =new int[]{100,95,96};
    for(int j =0;j<scores.length;j++){
        System.out.println(scores[j]);
    }

    System.out.println("*********************************");
    for(int score:scores){
        System.out.println(score);
    }

    System.out.println("*******************************");

    Integer [] tests =new Integer[]{100,95,96};
    Arrays.asList(tests).forEach(test  -> System.out.println(test));  //使用这个不能使用其基本数据类型,需要使用其对应的包装类

    System.out.println("*******************************");
    scores[0]=89;
    for(int score:scores){
        System.out.println(score);
    }
}
}

数组最大的优点就是可以快速查询,因此非常适合索引号有实际寓意的场合。

但是并非所有有语意的索引都适用于数组,如身份证号: 3101031985121 88888如果让它为索引,这得开辟很大的内存空间,造成空间浪费。

当然数组也可以处理“索引没有语意”的情况,我们这里主要处理“索引没有语意”的情况数组。你知道索引号如果没有语意,那么该如何表示没有元素呢?

注意capacity和size的区别:size是数组的长度(int类型),capacity是数组的容量(int数组类型)。

我们现在如何添加元素(超过size的情况下如何处理)?如何删除元素(挪位)? 你知道的Java数组并没有这些方法,因此需要我们基于java的数组,来进行二次封装从而实现一个属于我们自己的数组类。

但是你要明白,我们自己二次封装的是动态数组(其实依然是使用java数组来实现),而Java本身提供的数组则是静态数组,这一点需要明白。

自定义数组

假设我们定义的数组,我们需要对他们进行增删改查操作,当然并不是所有的数据结构都能进行这四个操作。再次强调一点:capacity是数组最多可以容纳元素的数量,这和实际能装元素的数量是没有关系的。

现在我们新建一个类Array,在里面写入以下代码:

package com.suanfa.test.Array;

public class Array {
    private int[] data;   //数组
    private int size;    //数组中元素的个数

    /**
     * 带容量参数构造函数
     *
     * @param capacity  数组容量
     * **/
    public Array(int capacity){
        data = new int[capacity];
        size =0;
    }



    /***
     * 默认的构造函数
     * */
    public Array(){
        this(10);
    }



    /**
     * 静态数组入参构造函数
     * @param data 传入静态数组
     */
    public Array(int[] data) {
        this.data = data;
    }


    /**
     * 获取数组元素个数
     *
     * @return size 数组元素个数
     */
    public int getSize() {
        return size;
    }


    /**
     * 获取数组的容量
     *
     * @return capacity 获取容量
     */
    public int getCapacity(){
        return data.length;
    }


    /**
     * 判断数组是否为空
     *
     * @return 是否为空
     */
    public boolean isEmpty(){
        return size==0;
    }
}

向数组中添加元素

所谓的size其实就是指向数组第一个元素,而我们初始的时候是空的,因此这里size就是指向data中第一个空的位置,我们添加元素时只需要添加到arr[size],并且使用size++就可以了(因为Size表示的是数组的长度,你添加了一个元素,所以size必定需要向后面进行移位,注意添加元素的时候需要判断该数组是否具有剩余的容量。

打开刚才定义的Array类:

    /**
     * 向所有元素末尾添加一个新元素。
     *
     * @param e 添加的元素
     */
    public void addList(int e){
        if(size ==data.length){
            throw new IllegalArgumentException("对不起,数组容量已经满了,添加元素操作失败!");
        }
//        data[size++]=e;  //这个和下面两行代码表达的意思一样,但还是建议分开写。
        data[size] =e;
        size++;
    }

上面是从元素开头进行添加元素,但是如果我们想添加元素到指定的位置呢?这又该怎么办呢?

假设我们有一个数组:int [] array = new int[] {66,88,90,100},那你肯定知道它们对应的索引号分别是0,1,2,3。现在我们希望把77这个元素插到索引号为1的位置,如何实现呢?

你可以将88及后面的元素都向后进行挪移,然后就可以把索引号1的位置给空出来了,接着把77这个元素插入即可,而且我们挪移都是从后面的元素开始挪位。相应的代码实现如下:

    /**
     * 在第Index的位置,添加e元素
     *
     * @param e 添加的元素,index 待添加元素的索引号
     */
    public void add(int index, int e){
        if(size ==data.length){
            throw new IllegalArgumentException("对不起,数组容量已经满了,添加元素操作失败!");
        }
        if(index<0 || index>size){
            throw new IllegalArgumentException("对不起,索引号必须在0和size之间");
        }

        //注意数组的索引范围为0-length-1;
        //开始位置: size也就是最后一个元素(索引号size-1),目标位置:index(这个元素也是要挪移的)
        for(int i =size-1;i>=index;i--){
            data[i+1]=data[i];
        }
        //将新的元素添加到index位置处
        data[index]=e;
        size++;
    }

有了这个方法,前面向数组末尾添加元素的方法就可以修改了,同时你还可以定义向数组开头添加元素的方法了:

    /**
     * 向所有元素末尾添加一个新元素。
     *
     * @param e 添加的元素
     */
    public void addLast(int e){
     add(size,e);
    }


    /**
     * 向所有元素开头添加一个新元素。
     *
     * @param e 添加的元素
     */
    public void addFirst(int e){
        add(0,e);
    }

在数组中查询元素和修改元素

首先我们既然需要查询和修改元素,那么必须要将修改的元素进行输,因此需要重写toString方法:

    /***
     * 打印数组信息及遍历元素
     *
     *  @return 数组信息和元素遍历结果
     * */
    @Override
    public String toString() {
        StringBuilder res =new StringBuilder();
        res.append(String.format("Array: size = %d, capacity = %d\n",size,data.length));
        res.append("[");
        for(int i =0;i<size;i++){
            res.append(data[i]);
            //判断是否是最后一个元素
            if(i != size-1){
                res.append(",");
            }
        }
        res.append("]");
        return res.toString();  //这里必须使用StringBuilder的toString方法
    }

然后我们来测试一下这个输出方法的正确性,打开ArrayTest.java文件,删除原来的数组代码,新增代码如下:

    Array array=new Array(20);
    for(int i =0;i<10;i++){
        array.addList(i);
    }
    System.out.println(array);

    System.out.println("**************************************************");

    array.add(2,100);
    System.out.println(array);

    System.out.println("**************************************************");
    array.addFirst(-1);
    System.out.println(array);

//输出结果:
Array: size = 10, capacity = 20
[0,1,2,3,4,5,6,7,8,9]
**************************************************
Array: size = 11, capacity = 20
[0,1,100,2,3,4,5,6,7,8,9]
**************************************************
Array: size = 12, capacity = 20
[-1,0,1,100,2,3,4,5,6,7,8,9]

现在是如何实现数组的索引访问和索引修改,我们继续在Array这个类里面新增代码:

    /**
     * 根据index来获取对应位置的元素
     *
     * @param index 索引号
     * **/
    public int get(int index){
        if(index<0 || index>size){
            throw new IllegalArgumentException("对不起,索引号必须在0和size之间");
        }
        return data[index];
    }


    /**
     * 根据index来修改对应位置的元素
     *
     * @param index 索引号,e  元素
     * **/
    public int set(int index,int e){
        if(index<0 || index>size){
            throw new IllegalArgumentException("对不起,索引号必须在0和size之间");
        }
        return data[index]=e;
    }

完成了修改的功能,接下来我们来实现查找数组中是否包含元素e的功能:

    /***
     *
     *查找数组中是否包含元素e
     *
     * @param  e  元素
     * */
    public boolean contains(int e){
        for(int i =0;i<size;i++){
            if(data[i]==e){
              return true;
            }
        }
        return false;
    }

以及查找元素e在数组中的位置(也就是最后返回索引号):

    /***
     * 方法1
     *
     *查找元素e在数组中的位置(索引号)
     *
     * @param  e  元素
     * */
    public int find(int e){
        //一般找不到该元素就返回-1
        int i=-1;
   if(contains(e)==true){
       for(i=0;i<size;i++){
           if(data[i] ==e){
               return i;
           }
       }
   }else{
       System.out.println("数组中不存在该元素");
   }
   return i;
    }


    /***
     * 方法2
     *
     *查找元素e在数组中的位置(索引号),一般找不到该元素就返回-1
     *
     * @param  e  元素
     * */
    public int find(int e){
        for(int i =0;i<size;i++){
            if(data[i]==e){
                return i;
            }
        }
        return -1;
    }

现在我们来完成在数组中删除元素的功能。

数组中删除元素

前面我们介绍了向数组中的指定位置添加元素,那么你就可以思考一下数组中如何删除指定位置的元素,这就是一个互逆的过程,不过删除的时候,元素都是向前挪位,反过来了。相应的代码实现如下:

    /**
     * 删除第Index位置的元素,并返回删除的元素
     *
     * @param index 待删除元素的索引号
     *
     *
     */
    public int remove(int index){
        if(index<0 || index>size){
            throw new IllegalArgumentException("对不起,索引号必须在0和size之间");
        }

        //注意数组的索引范围为0-length-1;
        //开始位置: index后面一个元素(索引号index+1),目标位置:index(这个元素也是要挪移的),然后新的元素将其进行覆盖
        for(int i =index+1;i<size;i++){
            data[i-1]=data[i];   //记住这里不能使用data[i+1]=data[i]; 
        }
        //size每次都需要-1
        size--;
        //将删除的元素进行返回
        return data[index];
    }

同样我们可以定义删除第一个,最后一个元素的方法,以方便调用:

    /**
     * 删除数组开头的元素,并返回删除的元素
     *
     * @param index 待删除元素的索引号
     */
    public int removeFirst(){
        return remove(0);
    }


    /**
     * 删除数组末尾的元素,并返回删除的元素
     *
     * @param index  待删除元素的索引号
     */
    public int removeLast(){
        return remove(size-1);
    }

以及删除数组中某个存在的值:

    /**
     * 删除数组中指定的元素
     *
     * @param  e 待删除的元素
     */
    public void removeElement(int e){
        int index =find(e);
        //判断元素是否存在,存在的话
        if(index != -1){
            remove(index);
        }
    }

当然我们这里需要说明就是我们这里的查找只是返回的第一个元素的索引值,因此删除也只是第一个元素。你可以尝试查找和删除所有的元素,但是这些都是设计模式的问题,而不再是数据结构的实现要求了。当然还包括如何删除其中重复的元素,其实就是重写里面的hashCode()和equals()方法。

最后我们来测试一下前面定义的方法是不是成功的,打开ArrayTest文件,新增以下代码:

  int index =array.find(4);
    System.out.println(index);

    System.out.println("**************************************************");
    
    array.remove(3);
    System.out.println(array);
    System.out.println("**************************************************");

    array.removeFirst();
    System.out.println(array);

    System.out.println("**************************************************");

    array.removeLast();
    System.out.println(array);

    System.out.println("**************************************************");

    array.removeElement(4);
    System.out.println(array);

    System.out.println("**************************************************");


//输出结果:
6
**************************************************
Array: size = 11, capacity = 20
[-1,0,1,2,3,4,5,6,7,8,9]
**************************************************
Array: size = 10, capacity = 20
[0,1,2,3,4,5,6,7,8,9]
**************************************************
Array: size = 9, capacity = 20
[0,1,2,3,4,5,6,7,8]
**************************************************
Array: size = 8, capacity = 20
[0,1,2,3,5,6,7,8]
**************************************************

这样关于数组基础介绍就到这里,下一篇介绍数组进阶。

邮箱专用破解工具(163动画破解教程) 软件作者为方便大家更容易学懂本软件.所以软件包自带163邮箱密码破解动画教程. 邮箱专用破解工具是一款远程控制软件,外加键盘记录..针对所有邮箱的记录,有在线记录以及离线记录. 欢迎测试软件 立即下载

相关推荐

K邮--SMTP邮箱密码破解软件 3.25.rar

使用方法: SMTP服务器:输入服务器地址(例 www.163.com pop3地址:输入pop3地址(例 pop3.163.com 这里不需要端口 错误范围:0-9999 已经是默认了 不需要修改, 特殊处理:~!@#$%^&*()_+|?:"{} (这里表示你要破解的邮箱有没有特殊字符。按照个人需求修改,一般默认就可以了 错误标记1: 错误 (这里只是一个标记 系统默认 不需要再次修改 错误标记2: 密码 (这里只是一个标记 系统默认 不需要再次修改 POP3用户名: 在这里输入你要破解的邮箱帐号,点击右边登陆按钮 任务开始 POP3密码:这里是返回数据的地方,请不要输入任何字符 选择字符按照你个人需求选择 至于生成程序以及上线方式暂时不需要

NCL基本语法(二)

NCL数组、语句和输出变量的信息

yiweixiaomiandui的博客 9131

Power BI财销一体分析——KPI分析应用实践

第九步:插入三个散点图,行拖入分销商表分销商字段,将度量值中的销量拖入X轴,将利润拖入Y轴,大小拖入度量值总销售额,将分销商表业务类型字段作为筛选条件添加给散点图,分别选择专业自行车店、增值经销商、仓库,使视觉对象固定显示不同业务类型的散点分布。这个公式其实是不需要我们自己写的,依赖于快度量值功能星级评分,基值选择度量值总销售额,星数选择5,最低星值评分选择0,最高星级评分值选择100,点击添加,星级评分度量值就建立好了,接下来我们理解一下公式。好的,今天的讲解就到这里。

BI瓶子的博客 1553

创建数组

package com.lrq; /** * * @author 李瑞琦 * 数组: * 1、其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。 * 2、其元素必须是相同类型,不允许出现混合类型。 * 3、数组中的元素可以是任何数据类型,包括基本类型和引用类型。 * */ public class TestArray { public static void

racy696的博客 1022

微信PC端Multi文件夹数据库解析:语音消息导出与转换实战指南

本文提供了一份详细的微信PC端语音消息导出与转换实战指南。通过解析Multi文件夹中的MediaMSG数据库,指导用户定位、解密数据库,并利用Python脚本精准提取SILK格式语音,最终转换为通用的WAV或MP3格式,实现个人语音数据的本地备份与处理。

garlic的博客 584

ESP32-P4 GPIO双域架构:HP/LP分离、寄存器级控制与低功耗工程实践

GPIO(通用输入输出)是嵌入式系统中最基础且高频使用的硬件接口,其性能、灵活性与功耗特性直接影响产品实时性与续航能力。现代高性能MCU如ESP32-P4通过HP/LP双电源域分离、可编程IO复用(IO MUX)、信号交换矩阵及硬件自动化机制(如ETM事件、Sigma-Delta调制),将传统GPIO升级为兼具模拟能力、亚微秒响应与微安级待机的智能外设子系统。其核心价值在于实现引脚功能动态重构、中断零延迟处理、Deep-sleep期间自主唤醒与多核安全操作。典型应用场景涵盖工业PLC信号采集、电池供电传感器

weixin_35949153的博客 99

二维数组简单练习

-------------代码实现:-------------------- #include #include #include #define N 64 using namespace std; bool peak(int grid[N][N],int h,int l); int main(void) { int nrows,nclos; int map[N][N]; string file...

whh869的博客 834

7.1华为OD机试真题 新系统 - 仓库盘点 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 仓库盘点 (Java/Py/C/C++/Js/Go)

算法大师! 509

二维数组的创建及定义

二维数组的定义:   可以简单理解为在数组中又存储了数组    两种初始化形式     格式1: 动态初始化 数据类型 数组名 [ ][ ] = new 数据类型[m][n] 数据类型 [ ][ ]  数组名 = new 数据类型[m][n] 数据类型 [ ]   数组名 [ ] = new 数据类型[m][n] 举例:int [ ][ ]  arr=new  in

wujianli08的博客 4924

C#项目实战——YModem协议文件传输【实例】

1、先由上位机发送*update*的握手信号,下位机返回响应字符‘C’(字符C,ASII码为0x43),之后通信双方开始以YMODEM协议进行数据通信。2、 YMODEM协议格式说明(1)起始帧数据格式帧类型(1byte)帧序号帧序号反码传输的文件名文件大小数据CRCSOH00FFfilenamefileziseNULCRCSOH=0x01,表示这个数据帧中包含着128个字节的数据(STX表示1024字节,初始帧只有128个);00表示数据帧序号,初始是0,依次向下排。

做有价值的事,积累有价值的笔记! 3656

C#上位机+YOLO实时目标检测:摄像头采集+多线程推理+精度调优全流程

标注数据集:使用LabelImg工具标注目标对象,按YOLO格式整理数据集;模型训练:使用Ultralytics库训练自定义模型,提升特定目标的检测精度;训练参数优化:增加训练轮数(epochs=100200)、调整批次大小(batch=1632)、使用数据增强(flip、mosaic等)。摄像头采集:封装通用采集类,支持USB摄像头/网口相机,实现稳定帧读取与异常处理;多线程推理:采用“采集线程+推理线程+UI线程”解耦架构,使用线程安全队列传递帧数据,彻底解决界面卡顿;核心封装。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 675

NCL基本语法(一)

NCL的基本语法字符、属性、赋值、列表变量

yiweixiaomiandui的博客 9405

Android 14.0 系统开机屏幕设置默认横屏显示

在14.0的系统ROM产品定制化开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从 两部分来实现,一部分是系统开机动画横屏显示,另一部分是系统屏幕显示横屏显示,从这两方面就可以做到开机默认横屏显示了

安卓兼职framework和app工程师的博客 2151

数据结构学习入门

数据结构(Data Structure)是计算机存储、组织数据的方式。它提供了一种高效的方式来管理和操作数据。数据结构不仅影响程序的执行效率,也决定了数据的存储方式和访问方法。数据结构的选择直接影响算法的性能。一个好的数据结构能够提高程序的运行速度并减少存储空间的占用,因此,学习数据结构是计算机科学领域的重要基础。学习数据结构是编程和算法的基础,不同的数据结构适用于不同的应用场景。希望这篇文章能帮助你理解数据结构的基本概念和实现方法!

百锦再的博客 3585

OpenCV自学记录(1)——(一拳超人)图像处理基础(图像获取、图像变化)

学习深度学习进行图像分类和目标检测时,要有一定的图像处理的基础。在学习深度学习之前,看了一本《图像处理技术基础》,现在也忘得差不多了,后悔当初没有整理记录下来。现在整理一下图像处理的常用方法,最后实现一个小项目——基于OpenCV的车牌号识别。 OpenCV自学记录(1)——图像处理基础(一)1、图像获取1.1获取图像数据1.2 获取摄像头图像数据2、图像变化2.1 移动(translation)...

qq_40784418的博客 1456

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【数据结构基础】之数组介绍,生动形象,通俗易懂,算法入门必看

数据结构基础数组介绍:数组定义,数组各种玩法,二维数组等详细介绍~

小新要变强的博客 1562

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数据结构中的C语言编程基础

C语言进行编程时一脸懵?对于数据结构中的数据类型不会定义?基本的算法不会写、记不住?来看一看这篇文章,提前根据考研的要求进行算法的编写,帮助你在考研时轻松拿分!

丹丹的后花园 4364

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

数据结构入门学习(非常详细)从零基础入门到精通,看完这一篇就够了。

数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的[逻辑结构](https://baike.baidu.com/item/%E9%80%BB%E8%BE%91%E7%BB%93%E6%9E%84/9663235?fromModule=lemma_inlink "逻辑结构")和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。

Javachichi的博客 2万+

PHP入门基础教程 - 专栏导读

欢迎来到PHP入门基础教程,本专栏将带领你逐步学习PHP编程语言的基础知识和应用技巧。无论你是新手还是有一定经验的开发者,都能从这个专栏中获得实用的知识和技巧。 希望这个PHP入门基础教程能够帮助到你,让你在Web开发的道路上越走越远!让我们一起开始吧!

黑夜开发者的博客 2582

数据结构基础入门

新手不用追求“一次学完所有数据结构”,先吃透本文讲的数组、链表、栈、队列、哈希表这5种基础结构,再逐步学习树(二叉树、红黑树)、图、堆等更复杂的结构。记住:数据结构的核心是“解决数据处理的效率问题”,学习的关键是“理解本质、动手实践、学以致用”。只要坚持练习,你会发现它并没有那么难,而且会成为你编程路上的“得力助手”。

Aayu_的博客 820

C 语言数据结构线性表入门笔记(一):基础概念与数组知识回顾

本文是数据结构学习系列的第一期笔记,主要介绍了数据结构与算法的基础概念,并重点回顾了数组这一基础线性结构。文章首先明确了数据结构的定义,区分了物理结构与逻辑结构,并介绍了四种基本数据结构类型。随后解释了算法的定义及其与数据结构的关系,强调两者相辅相成。接着详细讲解了数组的两种分类(自动数组和堆区数组)、创建与初始化方法,以及修改和查询操作的具体实现。最后指出了固定长度数组的局限性,为下一篇讲解动态数组做铺垫。全文旨在帮助读者建立数据结构的基础认知,为后续学习更复杂的数据结构打下坚实基础。

2502_90552706的博客 923

【数据结构】学习路线

摘要 本文系统性地介绍了数据结构与算法从入门到进阶的学习路径。首先阐述了数据结构在编程中的核心地位及其应用场景,然后详细讲解了学习路线:从编程语言基础和复杂度分析开始,逐步掌握数组、链表、树等基础数据结构,以及排序、查找等基础算法;进而深入学习图、动态规划等高级内容和面试准备技巧;最后探讨了工程实践和前沿技术。文章强调循序渐进的学习方法,推荐LeetCode等刷题平台,并提供大量代码示例,帮助读者构建完整的知识体系,为成为优秀程序员奠定坚实基础。

大雨淅淅的博客 1822

【如何从零基础小白开始学习C++详细介绍】

如果你想从零基础开始学习C++并最终成为一个“大佬”级别的专家,你需要遵循一个阶段性的学习计划,并且不断练习和深入研究,下面是学习方向的学习阶段。

2301_81357485的博客 2093

(二)Android数据结构学习之数组

前言上一篇文章讲述了数据结构的基本知识以及链表的相关知识,地址:(一)Android数据结构学习与算法之链表,本文是系列文章的第二篇,讲的是数组概述数组的使用数组在java中的实现为下:String[] arr1 = new String[3];// 创建一个大小为3的数组 arr1[0] = "0"; arr1[1] = "1"; arr1[2] = "2"; String[] arr2 = ne

u010618194的博客 7059

数据结构--数组(详细分析)

数组作为一种固定大小且内存连续的线性数据结构,提供了高效的随机访问能力。

考研小钻风 3621

深入详解C语言数组:承上启下——从C语言数组基础到数据结构衔接

关键点(1)数组长度必须是编译期常量(C99标准之前);(2)数组下标从0开始;(3)数组名在大多数情况下代表数组首元素的地址。// 定义方式:类型 数组名[元素个数];// 声明一个包含5个整数的数组// 初始化方式// 完全初始化// 部分初始化,剩余元素自动初始化为0// 省略长度,编译器自动计算// 定义方式:类型 数组名[行数][列数];// 3行4列的矩阵// 初始化方式{1, 2, 3}, // 第一行{4, 5, 6} // 第二行// 也可以连续初始化。

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 1124
上一篇: Python OCR图像验证软件的安装及使用
下一篇: 数据结构入门学习(三):数组进阶修炼
啃饼思录
博客等级 码龄9年 11粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值