`
李媛媛liyuanyuan
  • 浏览: 14794 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

数组队列总结

 
阅读更多
一:数组
1. 数组是一个容器
1.数组在定义时大小已固定
2.只能存储一种数据类型
3.是有序的
4.存储空间是连续的,线性的
2.数组的使用形式
   1.一维数组
数据类型[] 数组名称=new 数据类型[长度];
int[] array=new int[10];

数据类型[] 数组名称={数组中的元素,...,};
int[] array={1,2,3};

数据类型[] 数组名;
数组名= new 数据类型[]{值,...,...,};
int[] array;
array=new int[]{1,2,3};

数据类型 数组名[];
数组名= new 数据类型[长度];
int array[];
array=new int[10];
  2.二维数组(二维数组与一维数组大致一样)
数据类型[][] 数组名称=new 数据类型[行][列];
int[][] array=new int[10][10];

数据类型[][] 数组名称={数组中的元素,...,};
int[][] array={{1},{2,3}};

数据类型[][] 数组名;
数组名= new 数据类型[][]{{值,...},{...},};
int[][] array;
array=new int[][]{{1,2},{3}};

数据类型 数组名[][];
数组名= new 数据类型[行][列];
int array[][];
array=new int[10][10];

    一维数组和二维数组的存储空间都是连续的,线性的。

  
二:队列
1.因为数组在使用时长度已固定,如果要做增减等操作时需重新定义一个新数组,不方便,因此我们使用自定义队列。
2.自定义队列的实现:
1.定义一个类,封装数组的操作
2.定义一个原始数组,起始长度可定为0,数据类型为Object(Object是所用的父类)。
3.添加对数组操作的方法,如增加,删除,插入,修改,查找。
           在自己写完代码后可测试一下
代码如下:

public class MyQueu {
//创建一个数组
private Object[] src=new Object[0];
//在尾部添加一个对象
public void add(Object o){
//创建一个新数组
Object[] a = new Object[src.length+1];
//将src数组重的对象赋给a数组
for(int i=0;i<src.length;i++){
a[i]=src[i];
}
//将实参赋最后一位
a[src.length]=o;
//令src数组指向a数组
src=a;
}
//获取队列的长度
public int size(){
return src.length;

}
//
public void add(Object o,int index){
                  //创建一个新数组
Object[] a=new Object[src.length+1];

index = index-1;
//将index前的数赋给a
for(int i=0;i<index;i++){
a[i]=src[i];
}
//将o赋给a[index]
a[index]=o;
//将index后的数赋给a
for(int j=index+1;j<src.length+1;j++){
a[j]=src[j-1];
}
//令src数组指向a数组
src=a;
}
public void remove(int index){
                 //创建新数组
Object[] a=new Object[src.length-1];
index=index-1;
                  //将src数组下标小于index的赋给新数组


for(int i=0;i<index;i++){
a[i]=src[i];
}
                  //将剩余数组中的数据赋给新数组
                                                                                           for(j=index+1;j<src.length;j++){
a[j-1]=src[j];
}
//令src数组指向a数组
src=a;

}
public Object get(int index){
//返回值
return src[index];
}
//在数组中添加多个数据
public void add(int index,int num,Object[] b){
//实例化一个数组
Object[] a=new Object[src.length+num];
index =index-1;
//将src数组下标小于index的赋给新数组
for(int i=0;i<index;i++){
a[i]=src[i];
}
//将剩余数组中的数据赋给新数组
for(int j=0;j<num;j++){
a[j+index]=b[j];
}
///将src数组中的剩余数据赋给新数组

for(int i=index+num;i<a.length;i++){
a[i]=src[i-num];
}
//将src数组指向数组a
src=a;

}
//在数组中删除多个数据
public void remove(int index,int num){
//实例化一个新数组
Object[] a=new Object[src.length-num];
index=index-1;
//循环赋值
for(int j=0;j<index;j++){
a[j]=src[j];
}
//将剩余的元素赋给新数组
for(int i=index;i<a.length;i++){
a[i]=src[i+num];
}
//将src数组指向数组a
src=a;
}

}
测试如下:
public class Text {
/**
* 主函数
*/
public static void main(String [] args){
//实例化一个MyQueu类对象
MyQueu mq=new MyQueu();
//调用添加函数
mq.add(1);
mq.add("w");
mq.add(3);
//将4添加到队列中位置为mq[1]
mq.add("Q", 2);
//调用删除函数
mq.remove(4);
//获取队列的长度
mq.size();
//获取指定对象的名字
  mq.get(0);
  mq.get(1);
  mq.get(2);
  //实例化一个新数组
Object[] a={1,2,3};

mq.add(2, 3, a);
mq.remove(1,2);
  //输出
System.out.println(mq.size());
    for(int i=0;i<mq.size();i++){
    System.out.println(mq.get(i));
    }
}


}
分享到:
评论

相关推荐

    VBS 脚本中的字典、动态数组、队列和堆栈实现代码

    今天用VBS脚本写了几个程序,用到了字典(Dictionary)、动态数组(ArrayList)、队列(Queue)和堆栈(Stack)。现在写篇Blog总结一下 ,需要的朋友可以参考下

    JavaScript数据结构学习之数组、栈与队列

    主要给大家介绍了JavaScript数据结构之数组、栈与队列的相关资料,文中对数组、栈与队列的使用方法进行了详细的总结,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

    php常用经典函数集锦【数组、字符串、栈、队列、排序等】

    本文实例总结了php常用经典函数。分享给大家供大家参考,具体如下: 数组函数 数组操作 range(start,end) 创建一个数组,值从start开始,一直到end结束 如果range里面的参数是数字,那么他直接按照数字大小的顺序...

    数据结构–队列(Java实现)

    队列是一个有序列表,可以用数组或是链表来实现,遵循先进先出的原则 数组实现队列 图解 思考 1、front、real的初始值为-1,最大值为MaxSize 2、对列空的条件:rear = front 3、队列满的条件:real

    Java版本算法练习+笔记总结 按照数组-&gt; 链表-&gt; 哈希表-&gt;字符串-&gt

    Java版本算法练习+笔记总结 按照数组-&gt; 链表-&gt; 哈希表-&gt;字符串-&gt;栈与队列-&gt;树-&gt;回溯-&gt;贪心-&gt;动态规划-&gt;图论-&gt;高级数据结构进行系统的练习 每道题都有标号和题目链接.zip

    Java可阻塞队列-ArrayBlockingQueue

     ArrayBlockingQueue是由数组支持的有界阻塞队列,次队列按照FIFO(先进先出)原则,当队列已经填满,在去增加则会导致阻塞,这种阻塞类似线程阻塞。  ArrayBlockingQueue提供的增加和取出方法总结  使用...

    完整总结的数据结构代码

    完整的标准的可实现的在编译器上完整数据结构代码,包括线性表,数组,队列,栈,图和树等数据结构算法。。。。。

    PHP中对数组的一些常用的增、删、插操作函数总结

    对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用。 PS:传统的队列是一种数据结构,删除元素与...

    Java 常见并发容器总结

    Java 常见并发容器总结 JDK 提供的这些容器大部分在 `java.util.concurrent` 包中。 - **`ConcurrentHashMap`** : 线程安全的 `HashMap` - **`CopyOnWriteArrayList`** : 线程安全的 `List`,在读多写少的场合性能...

    leetcode二维数组-programming_exercises:leetcode、nowcoder刷题之路

    排序算法总结 面试编程题... 剑指Offer编程题目录 二维数组中的查找: 替换空格: 从尾到头打印链表: 重建二叉树: 用两个栈来实现队列: 旋转数组的最小数字: 斐波那契数列: 跳台阶: 跳台阶2: 矩形覆盖: 二进制中1的...

    经历BAT面试后总结的【高级Java后台开发面试指南】,纯净干货无废话,针对高频面试点

    消息队列 协调器 ID生成方式 一致性hash 限流 微服务 微服务介绍 服务发现 API网关 服务容错保护 服务配置中心 算法 数组-快速排序-第k大个数 数组-对撞指针-最大蓄水 数组-滑动窗口-最小连续子数组 数组-归并排序-...

    数据结构-线性表-xmind思维导图

    思维导图是对一个阶段学习的总结和知识的归纳,需要建立知识点之间的联系,将所学的知识可以根据较大区分度的地方进行划分,具有较大共通性的地方进行汇总。 串、栈、队列的区分度在于数据的运算和逻辑结构,而他们...

    数据结构与算法分析第二版 ---C语言描述(附加答案)

    表、栈和队列3.1 抽象数据类型(ADT)3.2 表ADT3.2.1 表的简单数组实现3.2.2 链表3.2.3 程序设计细节3.2.4 常见的错误3.2.5 双链表3.2.6 循环...ADT3.4.1 队列模型3.4.2 队列的数组实现3.4.3 队列的应用总结练习第4章...

    数据结构总结(自学、期末复习或考研备用).pdf

    内容涵盖:第一章绪论、算法衡量指标、第二章线性表、顺序表、链表、第三章栈和队、栈、栈的应用举例、队列、循环队列、第四章串、串的模式匹配、第五章数组和广义表、稀疏矩阵的压缩存储方法:、广义表、第六章树和...

    javascript删除数组元素的七个方法示例

    前面调侃了几句,回归正题,这里要总结7个在JavaScript中删除Array元素的方法,分别是利用length属性、delete关键字、pop()栈方法、shift()队列方法、splice()操作方法、forEach()或filter()迭代方法和prototype原型...

    校招笔试重点题目.zip

    校招编程题目总结,分了树、数组、栈队列、排序、字符串、动态规划、链表和其他8个部分

    c/c++ 学习总结 初学者必备

    def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是float. (2)double*(*gh)[10]; gh是一个指针,它指向一个一维数组,数组元素都是double*. (3)double(*f[10])(); f是一个数组,f有10个元素,元素都是...

    恋上数据结构课件.rar

    04-动态数组.pdf 05-链表.pdf 06-栈.pdf 07-队列.pdf 08-二叉树.pdf 09-二又搜索树.pdf 10-平衡二又搜索树.pdf 11-AVL树.pdf 12-B树.pdf 园13-红黑树.pdf 14-集合.pdf 15-映射.pdf 16-哈希表.pdf 圆17-二叉堆.pdf 18...

Global site tag (gtag.js) - Google Analytics