`

数组和链表实现的队列

阅读更多

 队列是一种特殊的线性表,它只允许在表的前端(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)以及...

    数组、链表、队列、栈的区别和联系 数组和链表.pdf

    队列和栈可以使用数组或链表实现,而数组和链表可以用于实现队列和栈。 数组、链表、队列、栈四种数据结构之间存在着紧密的联系,但同时也存在着许多区别。正确地选择和使用这些数据结构是非常重要的,它可以提高...

    python利用数组和链表实现栈和队列 数组和链表.pdf

    Python 实现栈和队列 栈和队列是两种常用的数据结构,在编程设计中广泛应用。...本文介绍了如何使用 Python 实现栈和队列,包括使用数组和链表两种方法。栈和队列是两种常用的数据结构,在编程设计中广泛应用。

    数组、链表、队列、栈数据结构特点,各自优点和缺点 数组和链表.pdf

    数组、链表、队列、栈数据结构特点,各自优点和缺点 在计算机科学中,数据结构是指用于组织和存储数据的方式。常见的数据结构包括数组、链表、队列、栈等。每种数据结构都有其特点、优点和缺点,本文将对这些数据...

    java使用数组和链表实现队列示例

    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(rear)进行插入操作,下面介绍一下java使用数组和链表实现队列的示例

    go语言通过数组和链表的方式实现队列 数组和链表.pdf

    "go语言通过数组和链表的方式实现队列" 从给定的文件信息中,我们可以生成以下知识点: 1.队列的定义:队列是一种特殊的线性表,只能在队列的尾部添加元素,在队列的头部删除元素,先进先出(FIFO)。 2.go语言中...

    队列的链表与数组分别实现

    本篇文章将深入探讨如何用数组和链表两种数据结构来实现队列。 ### 数组实现队列 数组实现队列的优势在于访问速度快,因为数组是连续存储的,可以通过下标直接访问元素。但数组的大小是固定的,所以在创建时需要...

    C语言数组形链表实现

    在C语言中,数组形链表是一种特殊的数据结构,它结合了数组的高效访问和链表的灵活扩展性。这种数据结构通常用于处理动态数组,其中元素可以方便地添加或删除,而不需要像传统数组那样预先知道确切的大小。本文将...

    数组和链表的对比分析 数组和链表.docx

    - **链表的优势**:适合需要频繁进行插入和删除操作的应用场景,如任务队列管理等。 - **链表的劣势**:查询效率低,不适合需要频繁查询数据的场景。 #### 关于顺序表的改进 对于基于数组的顺序表,可以通过引入...

    数据结构-数组&链表&队列&堆栈代码示例程序

    本篇内容将围绕数组、链表、队列和堆栈这四种基础数据结构,结合C++语言的代码示例,为读者提供深入的学习和参考。 数组是一种线性数据结构,它使用一段连续的内存空间来存储一系列具有相同类型的数据。数组的特点...

    数组、链表、堆栈和队列、线性表和顺序表 数组和链表.pdf

    数组、链表、堆栈和队列、线性表和顺序表 数组、链表、堆栈和队列是最基本的数据结构,任何程序都会涉及到其中的一种或多种。...理解不同的数据结构可以帮助开发者更好地设计和实现程序,提高程序的效率和可读性。

    arithmetic java算法冒泡排序、二叉树、数组、链表、队列学习简单示例

    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++循环队列模版(数组和链表两种实现方式都有)

    链表实现的循环队列在处理满队列和空队列时与数组实现有所不同,因为链表的节点可以动态增加和删除,所以无需像数组那样进行特殊的重置操作。 在C++中,模板(template)是泛型编程的重要工具,它可以让我们创建...

    超级数组和链表及栈队列

    超级数组和链表及栈队列

    常见的数据结构(栈、队列、数组、链表和红黑树) 数组和链表.pdf

    常见的数据结构(栈、队列、数组、链表和红黑树) 数组和链表.pdf

    数组和链表分别比较适合用于什么场景 数组和链表.pdf

    链表还适用于实现某些特定的数据结构,如堆栈、队列和图形数据结构。 在编程语言中,数组通常被内置支持,易于理解和使用,而链表则通常需要通过指针和结构体等概念来实现,相对复杂。但考虑到其灵活性,链表在处理...

    关于数据结构中数组、链表、队列、散列表、集合的理解

    经过一上午的学习,对数据结构有了新的认识和理解 数组 数组是由有限个相同类型的变量所组成的有序集合,...栈是一种线性逻辑结构,可以使用数组实现,也可以使用链表实现。包含入栈还有出栈操作,遵循先入后出的原则(F

    数组和链表(使用场景和反转链表) 数组和链表.pdf

    在实际应用中,除了数组和链表之外,针对不同需求还有多种数据结构的选择,例如栈、队列、树、哈希表等,但无论如何,正确理解数组和链表的原理与适用场景,对于高效的数据处理和算法实现仍然是不可或缺的。...

    数组和链表的理解,及各自的优缺点 数组和链表.pdf

    而链表由于其插入和删除操作的高效性,更适合频繁进行插入和删除操作且数据量变化较大的场景,如实现队列、栈和图等数据结构。 综上所述,数组和链表作为基础数据结构,它们各自具有独特的优缺点。在进行算法设计和...

    java数组和链表数据结构的区别 数组和链表.pdf

    - **链表适合**:如果需要频繁地插入和删除元素,或者数据的大小需要动态调整,而对随机访问要求不高的情况下,链表更为合适,例如实现LRU缓存淘汰策略、实现队列和栈等。 总的来说,选择数组还是链表取决于具体的...

Global site tag (gtag.js) - Google Analytics