`
旭冬冬
  • 浏览: 12893 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

自定义队列总结

阅读更多
在java语言中,为了弥补数组定义时必须声明数组大小的缺点,就出现了队列,很好的解决了这一问题。其实从本质上来说,队列是数组的改良版,通过对数组的操作,从而达到可以改变队列的大小。代码如下:

    private Object[] SrcA=new Object[0];//数组属性,长度初始化为0
   //添加对象
public void add(E e) {
// 创建一个数组,长度是原数组长度+1
Object []destA=new Object[SrcA.length+1];
//将要加入的对象放到新数组的最后
destA[SrcA.length]=e;
//将原数组元素放到新数组中
for(int i=0;i<SrcA.length;i++){
destA[i]=SrcA[i];
}
//原数组指向新数组
SrcA=destA;//即将原数组改为新数组。方便用于新数组放新对象
}
因为每次加入新元素时,都是将新数组的大小加一,之后原数组再指向新数组,这样就能不断的往里面加新元素了。
泛型:在上面代码中可以看出,引用了Object类和E,E是泛指的类型,因为在我们创建队列时,如果指定了它的类型,而当你想用它来创建与之类似的类时,你必须得把原来写的代码复制,并且要修改很多地方,这样极大的破坏了队列的重用性。因此就引用了E泛型,E可以代表各种类,这样当你需要什么类的时候,你就可以直接在调用队列的时候,就E类型指定为你所需要的类型就可以了。代码如下:
//创建队列对象
//当你需要String类型时,你就这样指定
NetJavaList<String> list=new Stlist();
一个队列一般都有它的增删改查的操作,因此附代码如下:
//得到指定索引的学生对象
public E get(int index) {
E st=(E)SrcA[index];//强制转型
return st;
}
    //得到队列的长度。即队列中元素的个数
public int size() {
return SrcA.length;
}
     //把第几个元素删除,删除指定位置的元素
public void delete(int index){
//声明一个数组大小比原数组小一
index=index-1;//将索引减一,实现索引与元素对应
Object []destA=new Object[SrcA.length-1];
//将原数组指定索引前的数复制给destA
for(int i=0;i<index;i++){
destA[i]=SrcA[i];//赋值
}
//将原数组指定索引后的数复制给destA
for(int i=index;i<destA.length;i++){
destA[i]=SrcA[i+1];
}
//将原数组指向新数组
SrcA=destA;
}
//把第几个元素改变,改变指定位置的元素,st为改变的新元素
public void change(int index,E e){
SrcA[index-1]=e;
}
//在指定位置插入指定元素
public void ChaRu(int index,E e){
//index代表插入的位置
//声明一个数组大小比原数组多1的数组
Object []destA=new Object[SrcA.length+1];
//将指定索引数之前(包括本身)的元素复制给新数组
for(int i=0;i<index+1;i++){
if(i<index)
destA[i]=SrcA[i];
else
destA[i]=e;
}
//再将指定索引后的元素复制给新数组
for(int i=index+1;i<destA.length;i++){
destA[i]=SrcA[i-1];
}
//将原数组指向新数组
SrcA=destA;
}
分享到:
评论

相关推荐

    ios-自定义Operation队列实现直播礼物动画.zip

    总结来说,这个项目展示了如何利用`NSOperation`和`NSOperationQueue`来管理和执行直播礼物的动画效果,通过自定义`NSOperation`子类,可以灵活地控制动画的细节,并通过队列的调度保证动画的流畅性和响应性。...

    索引队列-C#中的自定义队列

    标题 "索引队列-C#中的自定义队列" 指向了一个特定的数据结构实现,即在C#编程环境中创建一个支持索引访问的队列。在标准的`System.Collections.Generic.Queue&lt;T&gt;`类中,元素只能通过入队(Enqueue)和出队...

    GCD 总结-队列和任务的理解

    - 自定义并发队列:开发者可以根据需求创建,可以控制队列中的任务执行顺序。 #### 2.3 串行队列(Serial Queue) 串行队列会按照添加到队列的顺序,逐一执行任务,同一时间只处理一个任务,确保任务的执行顺序。可以...

    自定义的栈与队列

    自定义队列的实现方式有: 1. 双端队列(Deque):可以同时在两端进行入队和出队操作,例如C++中的`std::deque`。 2. 链表:使用链表,入队在尾部插入节点,出队则删除头部节点。 3. 循环数组:当数组满时,通过循环...

    C++实现一个队列

    C++标准库中提供了`&lt;queue&gt;`头文件来支持队列操作,但有时为了学习、理解数据结构的底层原理或者实现特定功能,我们需要自定义队列。本篇文章将深入探讨如何使用C++实现一个简单的队列。 首先,我们需要定义队列的...

    队列queue的实现

    虽然C++标准库提供了`std::queue`,但在某些情况下,我们可能需要自定义队列的实现,例如为了优化性能、满足特定需求或进行教学目的。下面是一个简单的基于数组实现的队列: ```cpp template class Queue { ...

    FreeRTOS+STM32F103通过队列传输串口数据

    队列的创建通常在FreeRTOS任务中完成,我们需要指定队列的容量(最大可存储的数据数量)和数据类型(通常是字节、整数或自定义结构体)。创建队列后,我们就可以使用`xQueueReceive`和`xQueueSend`函数来从队列中...

    C++队列实现,封装了数据结构中的队列

    在C++中,我们可以使用标准库中的`&lt;queue&gt;`来实现队列,但为了更好地理解数据结构的运作机制,有时会自定义队列的实现。下面我们将深入探讨C++中队列的实现及其基本操作。 首先,队列通常由两个主要操作组成:入队...

    c++链表队列的实现

    根据给定文件的信息,我们可以总结出以下关于C++中链表队列实现的相关知识点: ### 一、链表队列的基本概念 链表队列是一种使用链表结构来实现的队列数据结构。队列是一种先进先出(First In First Out, FIFO)的...

    C++数据结构 -- 队列

    在某些场景下,我们可能需要自定义队列,例如为了优化性能或者实现特定功能。自定义队列通常需要两个基本操作:入队(enqueue)和出队(dequeue)。我们可以使用链表或者数组作为底层数据结构来实现。在给定的文件中...

    串口缓冲区 循环队列

    在实现循环队列时,我们可以自定义一个固定大小的缓冲区,并维护两个指针,分别表示队头和队尾。 初始化循环队列时,队头和队尾指针都指向缓冲区的起始位置。当有新的数据到来时,数据被存入缓冲区的队尾位置,并将...

    数据结构实验栈和队列详细实验报告

    在C语言中,我们可以自定义结构体来表示栈和队列。例如,对于顺序栈,我们可以定义一个结构体,包含一个数组和一个指示栈顶位置的变量。在C语言中实现栈的基本操作如下: - `InitStack` 函数初始化栈,将栈顶位置设...

    windows下面c语言实现的队列

    在Windows环境下,C语言可以自定义队列结构,使用malloc和free进行动态内存管理,以及标准库中的函数如memcpy进行数据操作。队列的常用操作包括入队(enqueue)、出队(dequeue)、检查队头元素以及判断队列是否为空...

    约瑟夫生死游戏队列实现

    同时,也可以使用链表结构自定义队列实现,这样有利于理解队列的工作原理。 总结来说,约瑟夫生死游戏的解决方法体现了队列数据结构在算法设计中的应用,以及如何通过编程来解决这类循环淘汰问题。通过对这个问题的...

    queue-link.zip_C++队列_打印 队列_队列

    5. **自定义队列实现** 如果需要更高级的功能,如优先级队列,可以使用`std::priority_queue`。另外,通过继承`std::queue`并重载相关操作,可以实现自己的队列类,例如添加打印所有元素的方法。 6. **总结** C++...

    MFC 队列实现

    总结起来,MFC 队列实现涉及的主要知识点有: 1. 数据结构:理解队列的“先进先出”原则。 2. MFC 类库:了解 MFC 的基本概念和面向对象编程。 3. 自定义类:设计和实现队列类,继承自 `CObject`。 4. 标准库容器:...

    多级反馈队列调度算法 C语言模拟实现

    根据提供的标题、描述、标签及部分代码内容,我们可以总结出以下关于“多级反馈队列调度算法 C语言模拟实现”的详细知识点。 ### 多级反馈队列调度算法概述 多级反馈队列(Multilevel Feedback Queue, MFQ)调度...

    消息中间件masstransit使用routingkey进行自定义消息路由到队列

    本篇文章将深入探讨如何利用Masstransit结合RabbitMQ的routing key特性实现自定义消息路由到特定队列。 首先,让我们了解Masstransit的基本概念。Masstransit是一个.NET框架,提供了一种简单的方式来构建解耦、可靠...

    数据结构C++ 队列实现

    总结来说,数据结构中的队列是一种非常重要的抽象数据类型,C++通过STL提供了便利的`queue`接口,同时也允许开发者根据需要自定义队列的实现。理解和熟练运用队列可以帮助我们编写更高效、更易维护的代码,解决各种...

    编写一个JAVA的队列类

    本文将详细介绍如何在Java中自定义一个队列类,并实现队列的基本操作。 #### 队列的基本操作 队列通常支持以下几种基本操作: 1. **enq(x)**:向队列插入一个值为`x`的元素; 2. **deq()**:从队列删除一个元素;...

Global site tag (gtag.js) - Google Analytics