`
feng1990liu
  • 浏览: 8605 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

队列总结

 
阅读更多

先学的是数组,数组在五子棋的作用在五子棋中体现的很微妙,但数组有个很大的缺点,数组一旦定义,大小就是固定的,而用户的需要的大小是未知的,于是就出现了队列。队列的的实现大体有两种方法,一个是用数组实现,先定义一个数组大小为零的数组,然后没加一个元素,重新定义一个新数组,长度比原长度加一;另一种实现方式是链表队列,有单链表实现的队列,也有双链表实现的队列,大体思路都差不多,还可在其中定义各种需要的方法,如插入方法,删除方法等等。。。

package LinkList20130717;
package LinkList20130717;


import LinkBook20130717.LinkNode;
import LinkBook20130717.Student;

public class LinkList {
	private static LinkNode root;
	private LinkNode last;
	private int count=0;
	//定义加入节点的方法
	public void add(Object obj){
		LinkNode temp=new LinkNode(obj);
//		temp.setObj(obj);
//		root=new LinkNode();
		if(null==root){
			root=temp;
			last=root;
		}else{
			last.setNext(temp);
			last=temp;
		}
		count++;
	}
	public static void main(String[] args){
		LinkList link=new LinkList();
		LinkNode n1=new LinkNode("一节点");
		LinkNode n2=new LinkNode("二节点");
		LinkNode n3=new LinkNode("三节点");
		LinkNode n4=new LinkNode("四节点");
		link.add(n2);
		link.add(n1);
		link.add(n4);
		link.add(n3);
		link.printLinkList(root);
	}
	//队列的大小方法
	public int size(){
		return count;
	}
	//打印方法
	public void printLinkList(LinkNode root){
		if(null!=root){
			Object data=root.getObj();
			System.out.println(data);
			LinkNode temp=root.getNext();
			printLinkList(temp);//递归
		}
	}
}
package LinkBook20130717;

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 String toString(){
		return (String)this.getObj();
	}
	

}
 
package LinkList20130717;

import LinkBook20130717.Student;
//数组变队列
public class ArrayList01 {
	private static Student[] stu=new Student[0];
	//增加元素的方法
	public void add(Student laststu){
		//1.新建数组,长度是原来数组的长度
		Student [] newstu=new Student[stu.length+1];
		//2.将增加的元素加到数组的最后一位
		newstu[stu.length]=laststu;
		//3.将原数组以前的冬冬放到新书组中
			for(int i=0;i<stu.length;i++){
				newstu[i]=stu[i];
		       }
			stu=newstu;
	}
	//取得对应位置元素的方法
	public Student get(int index){
		Student stuIndex=stu[index];
		return stuIndex;
	}
	//队列的长度
	public int size(){
		return stu.length;
	}
	//插入元素的方法
	public void insert(Student stu01,int index ){
		//1.新建数组,长度是原来数组的长度
		Student [] newstu=new Student[stu.length+1];
	
		//3.将原数组以前的冬冬放到新书组中
			for(int i=0;i<index;i++){
				newstu[i]=stu[i];
		       }
		//2.将增加的元素加到数组的指定位置
			newstu[index]=stu01;
			//将索引值以后的元素放入数组中
			for(int i=index;i<stu.length;i++){
				newstu[i+1]=stu[i];
			}
			stu=newstu;
			
	}
	public Student remove(int index){
		Student[] destu=new Student[stu.length-1];
		for(int i=0;i<index;i++){
			destu[i]= stu[i];
		}
		for(int i=index+1;i<stu.length;i++){
			destu[i-1]=stu[i];
		}
		stu=destu;//放后为何不行
		return stu[index];
		
		
	}
	//打印学生信息
//	public void print(){
//		for(int i=0;i<this.size();i++){
//			System.out.println("学生姓名"+stu[i].name+"学分"+stu[i].getScro());
//		}
//	}
	public static void main(String args[]){
		Student stua=new Student("a",1);
		Student stub=new Student("b",2);
		Student stuc=new Student("c",3);
		Student stud=new Student("d",4);
		Student stue=new Student("e",5);
		ArrayList01 array=new ArrayList01();
		array.add(stua);
		array.add(stub);
		array.add(stuc);
		array.add(stud);
		array.insert(stue, 3);
		array.remove(2);
		for(int i=0;i<array.size();i++){
			System.out.println("学生姓名"+stu[i].getName()+"学分"+stu[i].getScro());
			
		}
	}

}
 
分享到:
评论

相关推荐

    数据结构队列总结

    数据结构中的队列是一种线性数据结构,遵循先进先出(First In First Out,FIFO)的原则,即最先进入队列的元素将是最先被处理的。与栈不同,队列允许在一端(通常称为队尾)进行元素的插入,在另一端(通常称为队头...

    循环队列的总结

    循环队列是一种线性数据结构,它在计算机科学中被广泛应用于数据缓存、消息队列等场景。相比于传统的队列,循环队列利用数组的循环特性,避免了队列满或空时需要重新分配内存的问题,提高了空间利用率和操作效率。在...

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

    GCD的核心概念包括队列和任务,本篇文章将深入探讨这两种核心元素,以及如何在实际项目中运用它们。 ### 1. GCD 的基本概念 GCD 是基于 C 语言的,但在 Objective-C 和 Swift 中都可以使用。它是Apple的系统级并发...

    数据结构线性表、栈和队列、串的实验报告

    - **循环队列**:顺序队列的一种优化形式,通过改变队头和队尾指针的移动方式,避免队列中的“假溢出”现象。 - **链式队列**:通过一组任意的存储单元存储队列中的元素。 **相关算法:** - **入队**:在队列尾部...

    对几种队列的总结

    本篇文章将对几种常见的队列进行深入的总结和探讨。 首先,我们来看最基本的**线性队列**,也称为顺序队列。线性队列在内存中通常是通过数组实现的,它的入队操作在队尾进行,出队操作在队头进行。当队列满时,可以...

    浅谈Java消息队列总结篇(ActiveMQ、RabbitMQ、ZeroMQ、Kafka)

    "Java 消息队列技术总结" Java 消息队列是分布式系统中重要的组件,主要解决应用解耦、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构。常用的消息队列有 ActiveMQ、RabbitMQ、ZeroMQ、...

    C语言_初始化队列+入队列+出队列+销毁队列

    #### 四、总结 本篇介绍了如何使用C语言实现链式队列的基本操作,包括初始化队列、入队列、出队列以及销毁队列。链式队列是一种非常实用的数据结构,在实际应用中可以有效地管理动态变化的数据集。通过对这些基本...

    PI解决队列堵塞问题

    #### 五、总结 通过上述步骤,我们可以有效地解决SAP PI中的队列堵塞问题。重要的是要密切关注队列的状态,并及时采取措施处理堵塞情况,以确保系统的稳定运行。此外,熟悉SMQ2和其他监控工具的功能,能够帮助我们...

    应用题及知识点总结 第四章队列

    应用题及知识点总结 第四章队列应用题及知识点总结 第四章队列应用题及知识点总结 第四章队列应用题及知识点总结 第四章队列应用题及知识点总结 第四章队列应用题及知识点总结 第四章队列应用题及知识点总结 第四章...

    数据结构 队列部分 队列的删除等相关操作

    总结 在本节中,我们讨论了队列的删除操作,并对其进行了详细的分析。我们了解了队列的基本概念,队列的删除操作,队列的实现,队列的添加操作和队列的遍历操作。通过对队列的理解,我们可以更好地理解和应用队列在...

    优先队列、图等总结及习题.docx

    优先队列、图等总结及习题 优先队列是一种特殊的队列结构,它的出队顺序是根据元素的优先权决定的,而不是元素入队的顺序。优先队列的操作包括查找、插入和删除,删除操作是根据优先权高或低的次序进行的。 一、...

    链式队列的基本运算

    链式队列是一种在计算机科学中广泛...- **总结与改进**:总结实验结果,提出可能的优化策略和未来改进的方向。 通过学习和实践这些基本操作,可以深入理解链式队列的原理,并为更复杂的算法和数据结构打下坚实的基础。

    队列_队列、C语言_

    总结来说,这个项目提供了使用C语言实现队列的实例,包括创建、插入、删除、检查队列状态和销毁队列的全部功能。通过分析这些文件,你可以深入理解C语言中如何手动构建和管理数据结构,这对于学习和理解操作系统、...

    C#消息队列发送及接收

    在IT行业中,消息队列(Message ...总结来说,C#中的MSMQ为开发者提供了一种高效、可靠的异步通信方式。通过理解和掌握消息队列的概念及其在C#中的实现,可以极大地优化你的应用程序架构,提升系统的稳定性和可扩展性。

    tp5.1消息队列 think-queue

    总结,"tp5.1消息队列 think-queue" 是一种在ThinkPHP5.1环境中实现消息队列的方式,通过使用think-queue组件,开发者可以轻松地创建和管理异步任务,提高应用的并发处理能力和系统稳定性。理解其安装、配置、使用...

    数据结构实验报告2-栈与队列-队列基本操作算法-实验内容及要求.docx

    - 采用队头/队尾间隔至少一个空闲元素的方法实现循环队列,这样可以避免队列的物理连续性与逻辑连续性的混淆,同时便于检测队列是否为空或满。 - 当队列为满时尝试执行入队操作,或者队列为时空执行出队操作时,...

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

    【栈和队列的基本概念】 栈是一种特殊的线性表,具有“后进先出”(LIFO,Last In First Out)的特点。栈的主要操作包括入栈(Push)和出栈(Pop)。入栈操作是在栈顶添加元素,而出栈则是删除栈顶元素。栈的应用...

    串口缓冲区 循环队列

    总结来说,串口缓冲区结合循环队列的设计,为STM32F103ZET6上的串口通信提供了一种高效、可靠的解决方案。通过合理地管理和操作循环队列,可以在保证数据完整性的同时,有效平衡数据的接收和处理速度,提升系统的...

    队列的基本操作

    #### 五、总结 通过以上分析,我们可以了解到链式队列的基本概念、结构及其实现方法。链式队列相比于顺序队列具有更好的动态扩展能力,适用于需要频繁进行入队和出队操作的应用场景。理解链式队列的基本操作有助于...

    入队列出队列练习_Labview队列的使用_labview队列_

    总结来说,“入队列出队列练习”是学习LabVIEW中队列操作的一个良好起点。通过实践,用户可以深入理解队列的工作原理,以及如何在实际项目中有效地使用队列。通过不断地实践和探索,LabVIEW的使用者能够逐步提高其在...

Global site tag (gtag.js) - Google Analytics