队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作
我管你什么队列,我就是要打破这规则,什么先进先出,都是浮云。
(1)用数组实现的队列:
//先自己定义一个接口 public interface NetJavaList { public void add(Student t); //继承该接口的类必须实现的方法 public Student get(int index);//队列的加入,取出,队列的大小 public int size(); }
//定义一个学生类
class Student { private String name ; //私有属性 名字,学分 private int score ; public Student(String name , int score){ this.name = name ; this.score = score ; } public void printInfo(){ System.out.println("姓名"+name + "学分"+score ) ; } }
// 实现自定义接口
public class STList implements NetJavaList{ private Student[] str = new Student[0] ; //增加队列的元素 public void add(Student t) { Student[] src = new Student[str.length+1]; for(int i=0;i<str.length;i++){ src[i]=str[i] ; } src[str.length]=t ; str = src ; } //得到队列中的某个元素 public Student get(int index) { Student t = str[index]; return t; } //返回队列的长度 public int size() { return str.length; } }
//写个主函数类实现下队列
public class Manager { public static void main(String[] args) { STList sil = new STList() ; for(int i=0;i<5;i++){ Student st = new Student("name"+i,i*10); sil.add(st); } printList(sil) ; } //输出队列中的所有元素 public static void printList(STList t){ for(int i=0;i<t.size();i++){ Student f =t.get(i); f.printInfo(); } } }
(2)
链表实现的队列
先定义一个节点类;
public class LinkNode { private Object obj ; //节点内的数据对象 private LinkNode next ; //对下一个节点的引用 //在创建节点对象的时候就传入节点的数据对象 public LinkNode(Object obj){ this.obj = obj ; } public Object getObj(){ return obj ; } public void setObj(Object obj){ this.obj = obj ; } public LinkNode getNext(){ return next ; } public void setNext(LinkNode next){ this.next =next ; } }
然后写个队列的实现方法类
public class LinkList { public static LinkNode root ;//第一个节点 public LinkNode last = null ;//最后的一个节点 public static void main(String ara[]){ LinkList df = new LinkList() ; df.add(1); df.add(2); df.add(3); df.printLinkList(root); df.move(root,2) ; df.move(root,2) ; df.printLinkList(root); } /* * 插入节点 */ public void add(Object obj){ //创建一个新的节点 LinkNode t = new LinkNode(obj); if(root ==null){ root = t ; last = root ; }else{ last.setNext(t); last = t ; } } /* * 输出操作 */ public void printLinkList(LinkNode root){ if(null != root){ Object data = root.getObj(); System.out.println(data); LinkNode temp = root.getNext(); printLinkList(temp) ; } } /* * 删除操作 */ public LinkNode move(LinkNode root,int index){ if(this.getLength()<index || index <0){ throw new RuntimeException("下标越界:"+index + ",size:" +this.getLength()) ; }else{ int count = 1 ;LinkNode sd = root ; while(count!=index-1){ sd = sd.getNext(); } sd.setNext(sd.getNext().getNext()); return root ; }} /* * 得到链表的长度 */ public int getLength(){ int count = 0 ; if(root==null){ return count ; } LinkNode node =root.getNext(); while(null != node){ count ++ ; node=node.getNext(); } //System.out.println((count+1)); return count+1 ; } }
相关推荐
本话题主要探讨了两种常用的数据结构——数组和链表——在实现队列这一线性数据结构时的应用。队列是一种先进先出(First In First Out, FIFO)的数据结构,它的主要操作包括入队(enqueue)、出队(dequeue)以及...
队列和栈可以使用数组或链表实现,而数组和链表可以用于实现队列和栈。 数组、链表、队列、栈四种数据结构之间存在着紧密的联系,但同时也存在着许多区别。正确地选择和使用这些数据结构是非常重要的,它可以提高...
数组、链表、队列、栈数据结构特点,各自优点和缺点 在计算机科学中,数据结构是指用于组织和存储数据的方式。常见的数据结构包括数组、链表、队列、栈等。每种数据结构都有其特点、优点和缺点,本文将对这些数据...
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作,下面介绍一下java使用数组和链表实现队列的示例
"go语言通过数组和链表的方式实现队列" 从给定的文件信息中,我们可以生成以下知识点: 1.队列的定义:队列是一种特殊的线性表,只能在队列的尾部添加元素,在队列的头部删除元素,先进先出(FIFO)。 2.go语言中...
本篇文章将深入探讨如何用数组和链表两种数据结构来实现队列。 ### 数组实现队列 数组实现队列的优势在于访问速度快,因为数组是连续存储的,可以通过下标直接访问元素。但数组的大小是固定的,所以在创建时需要...
在C语言中,数组形链表是一种特殊的数据结构,它结合了数组的高效访问和链表的灵活扩展性。这种数据结构通常用于处理动态数组,其中元素可以方便地添加或删除,而不需要像传统数组那样预先知道确切的大小。本文将...
- **链表的优势**:适合需要频繁进行插入和删除操作的应用场景,如任务队列管理等。 - **链表的劣势**:查询效率低,不适合需要频繁查询数据的场景。 #### 关于顺序表的改进 对于基于数组的顺序表,可以通过引入...
数组、链表、堆栈和队列、线性表和顺序表 数组、链表、堆栈和队列是最基本的数据结构,任何程序都会涉及到其中的一种或多种。...理解不同的数据结构可以帮助开发者更好地设计和实现程序,提高程序的效率和可读性。
数据结构-数组&链表&队列&堆栈代码示例,附有详细的注释说明,简单移动,适合初学者参考学习。
arithmetic java算法冒泡排序、二叉树、数组、链表、队列学习简单示例 private static void mpSoft(String [] data) { for (int i = 0; i ; i++) { System.out.println(Arrays.toString(data)); for (int j = 0; ...
链表实现的循环队列在处理满队列和空队列时与数组实现有所不同,因为链表的节点可以动态增加和删除,所以无需像数组那样进行特殊的重置操作。 在C++中,模板(template)是泛型编程的重要工具,它可以让我们创建...
超级数组和链表及栈队列
常见的数据结构(栈、队列、数组、链表和红黑树) 数组和链表.pdf
链表还适用于实现某些特定的数据结构,如堆栈、队列和图形数据结构。 在编程语言中,数组通常被内置支持,易于理解和使用,而链表则通常需要通过指针和结构体等概念来实现,相对复杂。但考虑到其灵活性,链表在处理...
经过一上午的学习,对数据结构有了新的认识和理解 数组 数组是由有限个相同类型的变量所组成的有序集合,...栈是一种线性逻辑结构,可以使用数组实现,也可以使用链表实现。包含入栈还有出栈操作,遵循先入后出的原则(F
在实际应用中,除了数组和链表之外,针对不同需求还有多种数据结构的选择,例如栈、队列、树、哈希表等,但无论如何,正确理解数组和链表的原理与适用场景,对于高效的数据处理和算法实现仍然是不可或缺的。...
而链表由于其插入和删除操作的高效性,更适合频繁进行插入和删除操作且数据量变化较大的场景,如实现队列、栈和图等数据结构。 综上所述,数组和链表作为基础数据结构,它们各自具有独特的优缺点。在进行算法设计和...
- **链表适合**:如果需要频繁地插入和删除元素,或者数据的大小需要动态调整,而对随机访问要求不高的情况下,链表更为合适,例如实现LRU缓存淘汰策略、实现队列和栈等。 总的来说,选择数组还是链表取决于具体的...