首页 > 其他分享 >如何构造类似数组的数据结构?

如何构造类似数组的数据结构?

时间:2023-07-25 15:07:11浏览次数:33  
标签:index int 构造 数组 数据结构 data public size

..

如何构造类似数组的数据结构?_ci

介绍

在开始解决数组问题之前,理解并实现类似数组的数据结构是一个很好的实践。

本课教您如何实现常见的数组操作,例如插入元素、删除元素、获取元素、求数组长度以及打印数组元素。

我们正在建设什么?

我们将从头开始构建一个数组,其中包含一些最常见的数组操作,如上所述。

我们还将学习如何通过调整方法将固定大小的数组转换为动态数组。这就是动态数组的概念:LinkedListArrayList、 以及一些更复杂的数据结构。

软件中的每个需求都被分成几个部分,我们对每个部分进行处理,最后将它们组合在一起。那么让我们分解一下需求。

问题陈述

从头开始构建一个数组并将元素存储在其中。该数组应该允许插入、删除、获取和打印元素。

Input:
CREATE -> 10 // create an array with capacity 10
INSERT -> {1, 2, 3, 4, 5} // insert these elements
DELETE -> 2 // remove 2nd index element
GET -> 0 // print 0th element
SIZE -> `.size()` // should print how many items currently an array has
PRINT -> // print all elements shown in output

Output: 
{1, 2, 4, 5, 0, 0, 0, 0, 0, 0}


需求细目

当被问到或遇到问题时,将要求写在纸上。

我们的要求是:

  1. 创建一个数组。
  2. 该数组应该具有以下方法。
  • insert()
  • remove()
  • get()
  • size()
  • print()
  1. 使数组自动调整大小(在下一篇文章中介绍)。
  2. 错误处理(可选,但当您与面试官一起构建数组时,它会增加价值)。我们有我们的要求。让我们来分解一下这个问题。

始终将问题分解为更小的块。构建较小的零件并将它们组合起来以完成要求将很容易。

阵列构建

创建数组

创建一个具有两个字段/属性的数组int[] datasize. 用于初始化数组大小的构造函数。

public class Array {
  private int[] data;
  private int size;

  public Array(int capacity) {
    data = new int[capacity];
    size = 0;
  }
}


我们size = 0为基于零索引的数组初始化了 , 。当我们将元素插入数组时,我们是从索引插入它们0

我们创建了一个基Array类,我们需要编写一些需要在我们创建的自定义数组数据结构上执行的基本数组操作。

插入一个元素

我们需要编写一个将项目插入数组的方法。

public void insert(int element) {  
  data[size] = element;  
  size += 1;  
}


或者您可以使用指定简写语法:

public void insert(int element) {  
  data[size++] = element; 
}


0我们在构造函数中初始化了数组大小。因此第一个元素存储在0索引中。

当我们调用 时data[size] = element,我们将一个项目存储在数组中的第0th 索引处。

在下一行中,我们有size += 1,它将大小变量从0增加到1。因此下一个项目将存储在下一个槽中。

如果我们想在中间索引或起始索引插入元素怎么办?我们需要替换该槽中的该元素吗?或者我们应该移动元素并在槽中插入一个元素?

在接下来的课程中,您将学习如何在数组中编写移位算法来插入元素。

标签:index,int,构造,数组,数据结构,data,public,size
From: https://blog.51cto.com/u_15739596/6845405

相关文章

  • 输出数组内每个元素的类型python
    输出数组内每个元素的类型PythonPython是一种简单而强大的编程语言,广泛用于数据处理和科学计算。在Python中,数组是一种重要的数据结构,它可以存储多个元素,并允许我们对这些元素进行操作。在本文中,我们将探讨如何输出数组内每个元素的类型,并提供相应的代码示例。什么是数组?在计算......
  • 数组的常见操作及其算法
    一、数组的常见操作1、定义一个int类型的数组,里面包含10个元素,分别赋一些随机数,然后求出这10个元素的最大值、最小值、总和、平均值。注:随机数公式:(数据类型)(最小值+Math.random()*(最大值-最小值+1))publicstaticvoidtest01(){//创建一维数组int[]a......
  • 翻转 实现数组元素倒序的方法
     在Java编程开发中,经常会遇到需要对数组进行操作的情况。其中一个常见的需求就是实现数组元素的倒序。本文将介绍一种简洁高效的方法来实现这个功能。在开始之前,我们需要先了解一下数组的基本概念。数组是一种容器,可以存储多个相同类型的数据。数组的元素可以通过索引来访问,索......
  • Java 字符串转整形数组的方法及注意事项
     在Java编程中,经常会遇到需要将字符串转换为整形数组的情况。这是一个常见的操作,它可以帮助我们更方便地处理数据。本文将介绍一些常见的方法和注意事项,以帮助您顺利完成字符串转整形数组的任务。方法一:使用split()方法split()方法是Java中常用的字符串分割方法,它可以按照指......
  • C++中定义一个二维数组
    在C++中定义二维数组有很多种方式1.第一种方式:定义一个二级指针(指向指针的指针)#include<iostream>usingnamespacestd;voidTraverse(int**p);intmain(){//two-dimensionarrayintm=3,n=5;int**arr=newint*[m];arr[0]=newint[n];arr[1......
  • LeetCode 热题 100 之 560. 和为 K 的子数组.md
    题目给你一个整数数组nums和一个整数 k,请你统计并返回该数组中和为 k 的连续子数组的个数 。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1<=nums.length<=2*10^4-1000<=nums[i]<=1000-10^7<=k<=10^7思路......
  • 数据结构优化dp
    滚动数组在dp时经常会发现只有相邻阶段间状态才会有直接联系,在转移方程中的体现形如:只有前\(m\)个阶段能影响当前阶段的状态,因此我们不需要储存下\(n\)个阶段的所有状态,只需要储存\(m\)个阶段的状态,以做到优化存储空间的目的。用这种方法可以将dp某一维干掉,把\(\mat......
  • 树状数组学习笔记
     树状数组真的很精美,码量小,还很快,比线段树快多了[滑稽]。一维树状数组单点修改,区间查询例题:loj#130.树状数组1louguP9974【模板】树状数组1不多说,代码:#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+5;intn,m,c[N];intlowbit(intk){......
  • 数组(Array)和链表(List)
    推荐https://cloud.tencent.com/developer/article/2304343引言在Java编程中,数组(Array)和链表(List)是常用的数据结构,用于在内存中存储和组织数据。两者都有各自的特点和适用场景,本文将深入比较数组与链表的区别,并结合代码示例进行详细解释。数组(Array)定义和特点数组是一种固定......
  • JavaScript数据结构和算法简述——数组
    为什么先讲数组数据结构可以简单的被分为线性结构和非线性结构。线性结构大致包括:数组(连续存储);链表(离散存储);栈(线性结构常见应用,由链表或数组增删和改进功能实现);队列(线性结构常见应用,由链表或数组增删和改进功能实现);非线性结构大致包括:树;图;其中,数组是应用最广泛的数据存储结构。它被......