1.数组队列的原理:
数组的物理内存大小不可改变,要使得可以在数组中添加或者删除元素,就只能创建一个新的数组,把原来数组的的值赋给新数组,再把要添加的元素放到新数组末尾,由于数组名存放的是内存首地址,只要把新数组的首地址赋给原数组名就可以啦
2.数组队列的实现:
实现队列的思路:在实现类的内部,使用数组保存装入队列的对象,每次加入新对象时,则创建一个比原来数组长度大1的数组
代码:
public class Student{
private String name;
private int score;
public Student(String name,int score){
this.name=name;
thhis.score=score;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setScore(int score){
this.
score =
score ;
}
public int getScore (){
return
score ;
}
public void showInfo(){
System.out.println("姓名:"+name+"学分:"+score);
}
}
public interface ArrayList<E>{
public void add(E e);
public E get(int index);
public int size();
}
public class BooList<E> implements ArrayList<E>{
private object[] srA=new Object[0];
public void add(E e){
Object[] newArray=new Object[srA.length+1];
newArray[srA.length]=e;
for(int i=0;i<srA.length;i++){
newArray[i]=srA[i];
}
srA=newArray;
}
public E get(int index){
E st=(E)srA[index];
return st;
}
public int size(){
return srA.length;
}
}
public class MainList{
public static void main(String args[]){
ArrayList<Student> al=new BooList();
for(int i=0;i<5;i++){
Student st=new Student("name"+i;i+10);
al.add(st);
}
System.out.println(a1.size()+"个学生信息如下");
for(int t=0;t<al.get(t);t++){
Student st=al.get(t);
st.showInfo();
}
}
}
分享到:
相关推荐
总结而言,循环链表队列和循环数组队列各有优势,选择哪种实现方式取决于具体的应用场景和性能需求。链表队列在动态调整队列大小时更为灵活,而数组队列在固定大小的情况下,能够提供更好的空间效率和访问速度。
### 队列数组实现 #### 概述 在计算机科学中,队列是一种非常基本的数据结构,它遵循先进先出(FIFO)的原则。队列可以被用来解决多种问题,比如任务调度、缓存管理等。队列可以通过多种方式实现,其中一种常见的...
### 基于数组的队列 #### 概述 本篇内容介绍了一种改进的基于数组实现的队列结构,特别之处在于引入了一个`tag`标记来优化队列的操作判断逻辑,使得队列在判空(判断是否为空)与判满(判断是否已满)时更加高效...
### 数组实现循环队列(有bug版) #### 概述 本文档主要介绍了一种基于数组实现的循环队列的代码实现,并对该代码进行了分析,指出了其中存在的问题及可能的原因。 #### 循环队列简介 循环队列是一种特殊的数据...
**循环队列**是数组实现的一种优化,通过将数组视为首尾相连的环形结构,可以更有效地利用数组空间。在循环队列中,当队尾到达数组末尾时,可以继续从数组开头开始存储元素,避免了不必要的数组复制操作。 #### ...
相比于传统的队列,循环队列利用数组的循环特性,避免了队列满或空时需要重新分配内存的问题,提高了空间利用率和操作效率。在本文中,我们将深入探讨循环队列的概念、实现方式以及其优缺点。 ### 循环队列概念 ...
数据结构是计算机科学中至关重要的基础概念...总结来说,数组、栈和队列是数据结构的基础,理解它们的概念和操作对于理解和设计复杂的算法至关重要。在实际编程中,灵活运用这些数据结构可以提高程序的效率和可维护性。
下面将详细介绍静态数组及其在C语言中的应用,以及如何实现一个简单的静态数组队列。 首先,静态数组是固定大小的数组,其大小在声明时必须确定,之后不能更改。在C语言中,声明静态数组的基本语法如下: ```c ...
总结一下,C++中的循环队列可以通过数组和链表两种方式实现,每种实现都有其特点。数组实现访问速度快,但处理满队列和空队列需要特殊考虑;链表实现插入和删除操作灵活,但访问速度较慢。模板机制使得循环队列可以...
在JavaScript中实现队列数据结构主要有两种方式:使用数组和使用对象。本篇文档将探讨如何使用数组来实现一个队列,并展示它的基本操作,如添加元素、删除元素、读取队首和队尾元素等。 ### 队列的概念与特点 队列...
3. **访问速度**:相比于数组队列,链表队列在访问数据时可能效率较低,因为需要遍历链表才能到达指定位置。 4. **实现复杂度**:链表队列的实现通常比数组队列更复杂一些,涉及到指针的操作。 ### 三、C++中链表...
总结来说,栈、队列和数组是C语言中不可或缺的数据结构,它们各有特点,各有优势。理解它们的工作原理和适用场景对于任何想要深入学习计算机科学和编程的开发者来说,都是一个不可或缺的过程。通过本资源,我们希望...
本篇文章将对几种常见的队列进行深入的总结和探讨。 首先,我们来看最基本的**线性队列**,也称为顺序队列。线性队列在内存中通常是通过数组实现的,它的入队操作在队尾进行,出队操作在队头进行。当队列满时,可以...
总结来说,栈、队列和数组是编程中基础且重要的数据结构,理解它们的概念和实现方式对于编写高效代码至关重要。栈用于回溯、表达式求解、括号匹配等问题,队列用于任务调度、缓冲区管理等,数组则常作为基础结构用于...
总结来说,“基于STM32串口环形队列”的设计旨在提升串口通信的效率和可靠性,通过合理利用内存资源和中断处理机制,实现高效的数据收发。byte_queue-master项目提供了一个实用的模板,开发者可以在此基础上根据具体...
总结来看,链队列是数据结构中的一项重要发明,它不仅克服了数组队列必须预先分配存储空间的局限,而且通过指针的链式结构,使得插入和删除操作更加高效。尽管链队列在某些情况下可能会因为频繁的指针操作而导致效率...
在计算机科学中,队列是一种基础且重要的数据结构,它遵循先进先出(FIFO,First In ...在实际编程中,根据具体需求选择合适的数据结构实现队列,如固定大小的数组队列、动态扩展的链表队列或支持双向操作的双端队列。
与数组实现的队列相比,链式队列能够更灵活地处理数据,特别是在动态变化的数据集合中。 #### 二、链式队列的关键概念 - **节点(Node)**:链式队列中的每个元素都是一个节点。 - **头指针(front)**:指向队列的第一...
总结,队列作为一种基础数据结构,有链式和数组式两种主要实现方式,每种都有其特点和适用场景。链式队列适合于动态变化的元素数量,而数组式队列则提供了一种简洁且效率较高的解决方案。在C++中,我们可以通过...
链式队列是一种在计算机科学中广泛使用的数据结构,它基于链表实现,与传统的数组队列相比,具有更大的灵活性。在本程序中,我们主要关注链式队列的六个核心操作,这些操作对于理解和应用链式队列至关重要。 1. **...