`
gogoalong
  • 浏览: 49110 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

数组队列

阅读更多

队列:
说到队列我们得先谈论一下数组这个东西。
数组:我们定义一个数组的时候是一般是这样定义的,定义一个固定长度的数组
int number[]=new int[10];
String names[]=new String [10];
我们用数组来存储一些数据,用
for(int i=0;i<number.length;i++){
number[i]=i;
}
但我们增加的数据元素只能是固定长度的,就像上面,我们只能增加10个元素,但如果我们想要加11个,那我们应该怎么办呢!!!!!还有如果我们增加的元素个数不确定呢!!!
你可能会说我把那个数组的大小设定为足够大就可以了,。不过这样就有些问题,如果我们设定的数组大小不够大,就不能加完我们想要的所以元素,如果我们设定的数组大小过大,而我们要加入的元素只有1,2个,那么就造成了空间浪费。所以就用到了队列。
        int[] shapes= new int[0];//定义一个初始数组
public void add(int shape) {
                //创建一个新的数组,使得这个新数组的长度是原数组的长度加1
int[] newshapes= new int[shapes.length + 1];
                //将新增的元素加到新的数组的末尾
newshapes[shapes.length] = shape;
                //将原数组的元素复制到新的数组中去
for (int i = 0; i < shapes.length; i++) {
newshapes[i] = shapes[i];
}
              //将新数组的地址赋给原数组
shapes= newshapes;
}

这样只要你新加元素,数组的长度就跟着加1 ,这样就使得空间得到合理应用,也解决了,在未知加入多少元素的情况下,实现加入。
下面是画板的图形对象加入队列中,为实现画板的重绘做准备。
<泛型中的<>中拥有的类型有,E--表示元素,K--表示关键字,T表示类型>
/**
* 对列的应用
* 泛型:在定义数据结构类的时候不指定具体的类型,而是通过 A<E> 泛指一种类型
* 在实例化这个类的时候再来指定具体的类型
*
* 增 删 改 查
* @author Administrator
*
*/
public class MyQueue<E> {
/**
*
*/
Object[] yuan = new Object[0];
public int size() {
return yuan.length;
}
/**
*
* @param e加入的新元素
*/
public void add(E shape) {
Object[] newshuzu = new Object[yuan.length + 1];
newshuzu[yuan.length] = shape;
for (int i = 0; i < yuan.length; i++) {
newshuzu[i] = yuan[i];
}
yuan = newshuzu;
}
/**
*
* @param e被插入的元素
* @param index被插入的位置
*/
public void insert(E shape,int index)
{
int i=yuan.length;
Object[] newshuzu = new Object[yuan.length + 1];
for(i=yuan.length;i>index;i--)
{
newshuzu[i]=yuan[i-1];
}
newshuzu[i]=shape;
for(i=index-1;i>=0;i--)
{
newshuzu[i]=yuan[i];
}
yuan=newshuzu;

}
/**
*
*
* @param index删除的 位置
*/
public  void  clear(int index)

{
int i=0;
Object[] newshuzu = new Object[yuan.length - 1];
for ( i = 0; i < index; i++) {
newshuzu[i] = yuan[i];
}
for(i=index+1;i<yuan.length;i++)
{
newshuzu[i-1]=yuan[i];
}
yuan = newshuzu;

}
/**
        *@param 得到元素
        */
public E get(int index){
return (E) yuan[index];
}

}
0
1
分享到:
评论

相关推荐

    C++数据结构之数组队列模版实现

    队列是一种先入先出的数据结构(FIFO),只允许在前端(front)删除,在后端(rear)插入。容量为capacity大小的内存,只能存capacity-1的元素,其中rear的位置始终为空。 本文实现的队列,功能如下: 1 获取元素内容 ...

    数组队列学习代码:队列和环形队列

    普通队列 1)将尾指针往后移:rear+1,当front==rear【空】 2)若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数中组元素中,否则无法存入数据。rear==maxSize-1[队列满] 环形队列 1)front变量的...

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

    ### 循环链表队列与循环数组队列的代码实现解析 在计算机科学中,队列是一种重要的数据结构,遵循先进先出(FIFO)原则。队列可以使用多种方式实现,包括链表和数组。本文将深入探讨两种队列实现方式:循环链表队列...

    用数组实现的优先队列(JAVA)

    在Java中,我们可以使用数组来实现优先队列。这篇文章将探讨如何利用数组实现优先队列,并通过提供的`PriorityQ.java`文件来深入理解其实现原理。 1. **优先队列基本概念** 优先队列是一种数据结构,它维护了一个...

    数组队列实现

    学习数据结构过程中,亲自在VC++上编译通过的使用数组实现队列的源代码,与大家共享。

    数组循环队列.rar

    在普通数组队列中,一旦队列满或空,需要进行数组的重新分配,而循环队列则避免了这个过程,提升了性能。 在编程语言中,如C、C++、Java或Python,我们可以用不同的方式实现数组循环队列。例如,在C++中,可以定义...

    Java数组队列概念与用法实例分析

    Java数组队列是一种基于数组实现的线性数据结构,它遵循先进先出(FIFO,First In First Out)的原则。在Java中,数组队列通常用于处理数据的顺序处理,例如任务调度、消息传递等场景。以下是关于Java数组队列的一些...

    队列数组实现

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

    【JavaScript源代码】Nodejs 数组的队列以及forEach的应用详解.docx

    本文主要探讨了如何利用数组的特性,特别是`push`、`shift`方法实现队列的先进先出(FIFO)原则,以及`forEach`方法在数组操作中的应用和注意事项。 ### 数组与队列 在JavaScript中,数组天生支持队列的操作。`...

    同步java之数组与队列

    为了实现队列操作,数组队列通常需要两个额外的变量来跟踪队头和队尾。添加元素时,如果队列已满,则需要进行扩容操作;移除元素时,如果队列为空,会抛出异常。这种基于数组的队列虽然在空间效率上比链表实现的队列...

    循环数组实现队列.doc

    以下是一个使用C++模板类实现的循环数组队列: ```cpp template class MyQueue { private: struct myq { int head, rear; T* ele; }; myq* q; const int Max; public: // 构造函数 MyQueue() { q = new ...

    数组实现队列

    由数组实现队列,包括队列的创建、入队和出队。通过打印显示出队的结果。正在学习数据结构的童鞋可以参考。

    泛型顺序队列和循环队列

    **泛型循环队列**,也称为环形队列,利用数组的循环特性,使得队列的首尾可以无缝连接。这种队列在处理大量数据流时有更高的效率,因为它避免了数组的动态扩展和收缩。在C#中,我们可以通过自定义类来实现泛型循环...

    Java数据结构:对象数组,数组堆栈,数组队列,SLL,动态堆栈和队列,DLL,BST,对象的BST,顺序文件,流,直接访问文件(随机访问文件)

    数组队列是另一种基于数组的数据结构,它遵循“先进先出”(FIFO)原则。你可以使用`enqueue`方法在队尾添加元素,`dequeue`方法从队头移除元素,同时支持`size`和`isEmpty`等操作。 4. **单链表(SLL)**: ...

    PHP使用数组实现队列

    在PHP中,实现队列的功能通常会借助数组及其内置函数来模拟队列的基本行为。队列是一种先进先出(First In First Out, FIFO)的数据结构,类似于现实生活中的排队等候系统,如银行的排号机,最先排在队伍中的人会...

    基于数组的队列

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

    循环数组实现队列

    循环数组实现队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。队列的操作受限制,和栈一样,它是一种操作受限制的线性表。进行插入操作的...

    同步队列-无锁队列-循环数组无锁队列.zip

    配套代码讲解:https://blog.csdn.net/songchuwang1868/article/details/90200251 ...同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列 同步队列-无锁队列-循环数组无锁队列

    数组实现循环队列

    java数组实现循环队列。包括入队, 出队,输出队列。 队列先入先出。

    duilie.rar_队列_队列C

    链式队列可以动态增长,但相比数组队列,它的空间利用率较低,且需要额外的指针存储。 在“队列操作.c”文件中,可能包含了以下函数实现: - 初始化队列(InitializeQueue):创建并初始化队列,设置队头和队尾指针...

Global site tag (gtag.js) - Google Analytics