`
李媛媛liyuanyuan
  • 浏览: 15278 次
  • 性别: 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));
    }
}


}
分享到:
评论

相关推荐

    循环链表队列 循环数组队列的代码实现

    总结而言,循环链表队列和循环数组队列各有优势,选择哪种实现方式取决于具体的应用场景和性能需求。链表队列在动态调整队列大小时更为灵活,而数组队列在固定大小的情况下,能够提供更好的空间效率和访问速度。

    队列数组实现

    ### 队列数组实现 #### 概述 在计算机科学中,队列是一种非常基本的数据结构,它遵循先进先出(FIFO)的原则。队列可以被用来解决多种问题,比如任务调度、缓存管理等。队列可以通过多种方式实现,其中一种常见的...

    基于数组的队列

    ### 基于数组的队列 #### 概述 本篇内容介绍了一种改进的基于数组实现的队列结构,特别之处在于引入了一个`tag`标记来优化队列的操作判断逻辑,使得队列在判空(判断是否为空)与判满(判断是否已满)时更加高效...

    数组实现循环队列(有bug版)

    ### 数组实现循环队列(有bug版) #### 概述 本文档主要介绍了一种基于数组实现的循环队列的代码实现,并对该代码进行了分析,指出了其中存在的问题及可能的原因。 #### 循环队列简介 循环队列是一种特殊的数据...

    数据结构队列总结

    **循环队列**是数组实现的一种优化,通过将数组视为首尾相连的环形结构,可以更有效地利用数组空间。在循环队列中,当队尾到达数组末尾时,可以继续从数组开头开始存储元素,避免了不必要的数组复制操作。 #### ...

    循环队列的总结

    相比于传统的队列,循环队列利用数组的循环特性,避免了队列满或空时需要重新分配内存的问题,提高了空间利用率和操作效率。在本文中,我们将深入探讨循环队列的概念、实现方式以及其优缺点。 ### 循环队列概念 ...

    数据结构中数组,队列,栈

    数据结构是计算机科学中至关重要的基础概念...总结来说,数组、栈和队列是数据结构的基础,理解它们的概念和操作对于理解和设计复杂的算法至关重要。在实际编程中,灵活运用这些数据结构可以提高程序的效率和可维护性。

    C语言实现使用静态数组.zip

    下面将详细介绍静态数组及其在C语言中的应用,以及如何实现一个简单的静态数组队列。 首先,静态数组是固定大小的数组,其大小在声明时必须确定,之后不能更改。在C语言中,声明静态数组的基本语法如下: ```c ...

    C++循环队列模版(数组和链表两种实现方式都有)

    总结一下,C++中的循环队列可以通过数组和链表两种方式实现,每种实现都有其特点。数组实现访问速度快,但处理满队列和空队列需要特殊考虑;链表实现插入和删除操作灵活,但访问速度较慢。模板机制使得循环队列可以...

    JS使用数组实现的队列功能示例

    在JavaScript中实现队列数据结构主要有两种方式:使用数组和使用对象。本篇文档将探讨如何使用数组来实现一个队列,并展示它的基本操作,如添加元素、删除元素、读取队首和队尾元素等。 ### 队列的概念与特点 队列...

    c++链表队列的实现

    3. **访问速度**:相比于数组队列,链表队列在访问数据时可能效率较低,因为需要遍历链表才能到达指定位置。 4. **实现复杂度**:链表队列的实现通常比数组队列更复杂一些,涉及到指针的操作。 ### 三、C++中链表...

    对几种队列的总结

    本篇文章将对几种常见的队列进行深入的总结和探讨。 首先,我们来看最基本的**线性队列**,也称为顺序队列。线性队列在内存中通常是通过数组实现的,它的入队操作在队尾进行,出队操作在队头进行。当队列满时,可以...

    栈、队列和数组.ppt

    总结来说,栈、队列和数组是编程中基础且重要的数据结构,理解它们的概念和实现方式对于编写高效代码至关重要。栈用于回溯、表达式求解、括号匹配等问题,队列用于任务调度、缓冲区管理等,数组则常作为基础结构用于...

    基于STM32串口环形队列

    总结来说,“基于STM32串口环形队列”的设计旨在提升串口通信的效率和可靠性,通过合理利用内存资源和中断处理机制,实现高效的数据收发。byte_queue-master项目提供了一个实用的模板,开发者可以在此基础上根据具体...

    duilie.rar_删除队列

    在计算机科学中,队列是一种基础且重要的数据结构,它遵循先进先出(FIFO,First In ...在实际编程中,根据具体需求选择合适的数据结构实现队列,如固定大小的数组队列、动态扩展的链表队列或支持双向操作的双端队列。

    C语言_初始化队列+入队列+出队列+销毁队列

    与数组实现的队列相比,链式队列能够更灵活地处理数据,特别是在动态变化的数据集合中。 #### 二、链式队列的关键概念 - **节点(Node)**:链式队列中的每个元素都是一个节点。 - **头指针(front)**:指向队列的第一...

    数据结构,队列的实现,包括链式和数组式

    总结,队列作为一种基础数据结构,有链式和数组式两种主要实现方式,每种都有其特点和适用场景。链式队列适合于动态变化的元素数量,而数组式队列则提供了一种简洁且效率较高的解决方案。在C++中,我们可以通过...

    链式队列的基本运算

    链式队列是一种在计算机科学中广泛使用的数据结构,它基于链表实现,与传统的数组队列相比,具有更大的灵活性。在本程序中,我们主要关注链式队列的六个核心操作,这些操作对于理解和应用链式队列至关重要。 1. **...

    数据结构 队列部分 队列的删除等相关操作

    在队列的实现中,我们可以看到,队列的元素是通过数组来存储的,而front和rear指针是用来控制队列的元素的添加和删除的。 队列的添加操作 在上面的代码中,我们可以看到,队列的添加操作是通过将元素添加到队列的...

    线性表、堆栈、队列

    总结起来,线性表、堆栈和队列是数据结构的基础,它们在算法设计和程序实现中有着广泛应用。理解并掌握这些概念,以及如何在C++中实现它们,对于提升编程技能和解决实际问题至关重要。通过实践和学习,我们可以更好...

Global site tag (gtag.js) - Google Analytics